没有调用自定义视图的onDraw

时间:2013-01-25 17:16:48

标签: android

我有一个扩展ImageView的自定义视图。永远不会调用onDraw()。

没有什么复杂的:

public class NVGlobeView extends ImageView{

我有3个构造函数:

 public NVGlobeView(Context context) {
        this(context, null);
    }

    public NVGlobeView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public NVGlobeView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        mContext = context;

我已经覆盖了测量并强制使用固定大小以确保视图没有零维度。我知道我的视图被添加到布局中,因为onMeasure()被调用,我可以单步执行它以验证是否正确设置了大小。我也用AVD上的heirarchy查看器验证了它。

 @Override
 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        //setMeasuredDimension(getMeasuredWidth(), getMeasuredHeight());

        DisplayMetrics dm = mContext.getResources().getDisplayMetrics();
        setMeasuredDimension(dm.widthPixels-50,dm.heightPixels-100);
}

最后,onDraw()

@Override
protected void onDraw(Canvas canvas) {

    super.onDraw(canvas);

}

我在超级电话上放了一个断点,它从未到达。

这是相关的活动代码。

    setContentView(R.layout.nvglobeview);

    NVGlobeView globeView = (NVGlobeView)findViewById(R.id.globeView);
    globeView.invalidate();

我错过了哪些想法?

1 个答案:

答案 0 :(得分:0)

猜测,也许您返回的测量结果是视图没有可见空间。