如何解决Android - 如何使用 Canvas 在 OnDraw() 中设置自定义视图的宽度和高度?
我正在尝试为使用 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);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。