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