onDraw无法正常工作

时间:2016-01-09 14:25:05

标签: java android canvas android-custom-view android-resources

我用一个新的覆盖了RelativeLayout类:

public class myRelative extends RelativeLayout{
//...
//this function is called but layout is not filled
@Override
    protected void onDraw(Canvas canvas) {
        // TODO Auto-generated method stub
        super.onDraw(canvas);
        canvas.drawColor(Color.WHITE);
    }
//...
}

XML文件如下所示:

 <myRelative
                    android:id="@+id/someid"
                    android:clipChildren="false"
                    android:clipToPadding="false"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="vertical" >
....
</....>

此布局的行为与通常的RelativeLayout相同?为什么没有改变?有什么想法吗?

2 个答案:

答案 0 :(得分:2)

尝试在自定义视图的所有构造函数中设置setWillNotDraw(false);。或者也许您的自定义视图放在xml中,其中父视图也有WHITE背景。

答案 1 :(得分:1)

布局有特殊优化。如果没有设置背景,则不调用onDraw,因为布局应该是空视图。每次只调用dispatchDraw。