0
TextView tv
이 있는데, 일부 텍스트를 씁니다. 그런 다음 TextView에서 비트 맵을 추출하고이 비트 맵을 캔버스에 그립니다. TextView의 텍스트를 tv.setGravity (Gravity.CENTER)를 사용하여 세로 및 가로로 가운데에 맞 춥니 다. 그러나 텍스트는 수평으로 만 가운데에 맞춰집니다. 다음은 코드가 텍스트 뷰를 생성하고 모든 매개 변수 설정입니다 : 여기TextView Gravity.CENTER가 수직으로 센터링하지 않습니다.
tv.layout(0, 0, displayWidth, displayHeight);
tv.setTextSize(60);
tv.setTextColor(Color.WHITE);
tv.setBackgroundColor(Color.GREEN);
tv.setGravity(Gravity.CENTER);
tv.setText(text);
tv.setDrawingCacheEnabled(true);
textBmp = tv.getDrawingCache().copy(Bitmap.Config.ARGB_8888, true);
tv.setDrawingCacheEnabled(false);
을 그리고 내 캔버스에 그립니다 어떻게 내가 그렇게 텍스트는 것을 어떻게해야합니까 무엇
protected void onDraw(Canvas canvas) {
canvas.drawBitmap(textBmp, 0, 0, null);
}
}
세로로 가운데에 위치한다.
불행히도 그게 아닙니다. 그냥 0보다 큰 값으로 시도했지만 여전히 동일합니다. 이 줄에서는 TextView가 얼마나 큰지를 정의하고 있습니다.이 경우 TextView는 부모만큼 큽니다. – TheBaj
좋습니다. 이것이 당신에게 무엇을 주는가? 'tv.layout (displayWidth/4, displayHeight/4, displayWidth/4, displayHeight/4);'? –
네 개의 값을 모두 동일하게 만들면 NullPointerException이 발생합니다. 위쪽 및 왼쪽 값을 아래쪽 및 오른쪽 값보다 작게 만들기 위해 조금 변경했습니다. 여전히 같은 결과입니다. 그것은 단지 수평 중심에있게됩니다. – TheBaj