0

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

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

有没有办法我可以做到这一点?我已经尝试扩展RelativeLayout和覆盖它的onDraw()方法,但我没有设法仅绘制特定区域(标记为灰色)。

4

1 回答 1

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框架默认做的优化)。

于 2013-02-06T15:08:10.290 回答