我有一个RelativeLayout
的自定义视图,其中包含ListView
(两者都设置为匹配父级 - 宽度和高度)。
在列表的顶部,我有一个View
,如下图所示:
我希望绘制的唯一部分是我View
的矩形(标有灰色),而视图的所有其他部分都是透明的。
我有办法做到这一点吗?
我已经尝试扩展RelativeLayout
并覆盖其onDraw()
方法,但我无法仅绘制特定区域(以灰色标记)。
答案 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的优化框架默认情况下)。