我有一个扩展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();
我错过了哪些想法?
答案 0 :(得分:0)
猜测,也许您返回的测量结果是视图没有可见空间。