我可以在不强制重绘基础视图的情况下重绘视图吗?

时间:2015-10-25 02:47:37

标签: android view

我有一个大型自定义视图(地图)和一个较小的视图(高度计)。

enter image description here

有没有办法更新顶部视图而不强制完全重绘底部视图?

2 个答案:

答案 0 :(得分:1)

不可能(正常意义上)。如果您有多个视图,则在一个视图上调用invalidate()将重绘所有这些视图。在视图上调用invalidate()时,它会重绘dirty region中的所有内容。这由dispathDraw()中的ViewGroup方法处理。 dispatchDraw()调用drawChild(),这就是为什么当我们在一个视图上调用invalidate()时,其他视图也会被绘制出来。

话虽如此,您可以覆盖自己的自定义dispatchDraw()中的ViewGroup方法,并处理事情的行为。

答案 1 :(得分:0)

另外:我刚刚发现,如果您为View提供不透明的背景,则使其无效会使底层视图无效。它不是一个完美的解决方案,但它是一个非常好的解决方案。

现在我需要看看是否可以制作非矩形的视图。