仅绘制自定义视图的一部分

时间:2013-02-06 14:13:52

标签: android android-custom-view custom-draw

我有一个RelativeLayout的自定义视图,其中包含ListView(两者都设置为匹配父级 - 宽度和高度)。 在列表的顶部,我有一个View,如下图所示: My Custom View

我希望绘制的唯一部分是我View的矩形(标有灰色),而视图的所有其他部分都是透明的。

我有办法做到这一点吗? 我已经尝试扩展RelativeLayout并覆盖其onDraw()方法,但我无法仅绘制特定区域(以灰色标记)。

1 个答案:

答案 0 :(得分:0)

最后,我通过扩展RelativeLayout并覆盖其draw()方法来实现此目的。

@Override
protected void draw(Canvas canvas) {
    canvas.clipRect(magnifiedRegion.getLeft(), magnifiedRegion.getTop(), magnifiedRegion.getRight(), magnifiedRegion.getBottom());
    super.draw(canvas);
}

其中magnifiedRegion是我在上面的问题中提到的观点。

注意:您必须在构造函数中设置this.setWillNotDraw(false);,否则框架不会调用draw()方法(因为我们的根视图是ViewGroup - 这是Android的优化框架默认情况下)。