问题描述
我正在尝试为使用 Canvas 绘制的自定义视图设置宽度和高度。
注意到 onDraw() 总是设置为默认的宽度和高度,而不是使用 layout xml 中指定的值或使用 onMeasure 方法设置的值。
有人可以帮助我哪里出错了。
谢谢
@Override
protected void onMeasure(final int widthMeasureSpec,final int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec,heightMeasureSpec);
setMeasuredDimension(getMeasuredWidth(),getMeasuredHeight());
}
解决方法
您可以使用此代码
public class CustomView extends View{
private Paint paint;
private int w;
private int h;
public CustomView(Context context,AttributeSet attr) {
super(context,attr);
paint = new Paint();
paint.setTextAlign(Align.CENTER);
}
@Override
protected void onSizeChanged(int w,int h,int oldw,int oldh) {
this.w = w;
this.h = h;
super.onSizeChanged(w,h,oldw,oldh);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.WHITE);
canvas.drawText("TEST",w/2,h/2,paint);
}
}