这是我的代码:
if (myView == null) {
myView = new View(mContext) {
@Override
protected void onDraw(final Canvas canvas) {
super.onDraw(canvas);
final float width = (float)getWidth();
......
}
};
addView(myView);
}
requestLayout();
虽然mContext的大小不为零,但我的代码中的宽度始终为0。任何人都可以建议我得到宽度为0的可能原因是什么?感谢
答案 0 :(得分:1)
您必须在onSizeChanged
处理程序中记录画布的尺寸,然后在onDraw
处理程序中使用它们。
private int canvasWidth;
private int canvasHeight;
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
canvasWidth = w;
canvasHeight = h;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
final float width = (float)canvasWidth;
...
}
答案 1 :(得分:0)
作为一名新手,我认为你的新观点是空白的,因为它的宽度和高度都是0。 也许你应该尝试设置它的布局参数,给出一些硬编码的高度和宽度。
目前onmeasure没有什么可衡量的。 也许吧 。 :P
答案 2 :(得分:0)
尝试从画布获取宽度和高度
@Override
protected void onDraw(Canvas canvas) {
mScrWidth = canvas.getWidth();
mScrHeight = canvas.getHeight();
[...]
}