0
다른 View Canvas에 TextView의 DrawingCache를 그릴 때 TextView의 중력은 수직 방향으로 영향을 미치지 않습니다. 여기TextViews 중력이 수직으로 작동하지 않습니다.
캔버스 소유 할 TextViews 캔버스 그리기 클래스 : 보시다시피
ViewGroup root = (ViewGroup) findViewById(R.id.root); // is a linear_layout - width and height is match_parent
TextView tv = new TextView(getApplicationContext());
tv.setText("Hello World!");
tv.setTextSize(40.0f);
tv.setLayoutParams(new LinearLayout.LayoutParams(300,200));
tv.setTextColor(Color.WHITE);
tv.setBackgroundColor(Color.parseColor("#3131c5"));
tv.setGravity(Gravity.CENTER);
GravityDecorator gd = new GravityDecorator(tv, getApplicationContext());
root.addView(gd);
의 TextViews 콘텐츠의 중력 : 여기
public class GravityDecorator extends View{
private View view;
private Paint paint= new Paint();
public GravityDecorator(View view,Context context) {
super(context);
this.view = view;
view.setDrawingCacheEnabled(true);
view.layout(0, 0,600,500);
this.layout(0, 0,600,500);
invalidate();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
view.buildDrawingCache();
canvas.drawBitmap(view.getDrawingCache(), 0, 0, paint);
view.destroyDrawingCache();
}
}
그것을 테스트하는 코드 (에서 onCreate가)입니다 수평 방향으로 만 적용됩니다.
버그가있는 경우 그 이유와 해결 방법은 무엇입니까?
는 레이아웃 PARAM은 처음에는TextView
설정지고 있지 않기 때문에 당신이
이것은 TextView의 내용을 가운데에 표시하지만 크기는 "wrap_content"와 같습니다. 테두리 (상단, 왼쪽, 오른쪽, 아래쪽 또는 둥근)가있는 모든보기를 꾸미는 클래스를 구현하려고합니다. 따라서이 클래스는 다른 모든 코드없이 동작을 보여주기위한 예제 일뿐입니다. 패딩과 여백을 포함하여 경계를 사용하여 뷰를 장식하는 클래스입니다.하지만 중력은 아닙니다. – steffka
얻는 비트 맵은 레이아웃 매개 변수 tv.setLayoutParams (새 LinearLayout.LayoutParams (300,200))를 제공하는 것과 정확히 동일한 높이입니다. – Triode
오, 확인. 나는 그것을 놓쳤다. 고마워요! – steffka