我有一个大的自定义视图(地图)和一个较小的视图(高度计)绘制在顶部。

是否有任何方法来更新顶部视图而不强制完全重新绘制底部视图?
发布于 2015-10-25 08:38:21
不,这是不可能的(在正常意义上)。当您拥有多个视图时,在一个视图上调用invalidate()将重新绘制所有这些视图。当在视图上调用invalidate()时,它会重新绘制dirty region中的任何内容。这是由dispathDraw()方法在ViewGroup中处理的。dispatchDraw()反过来调用drawChild(),这就是为什么当我们在一个视图上调用invalidate()时,也会绘制其他视图。
尽管如此,您可以在您自己的自定义dispatchDraw()中重写ViewGroup方法,并处理事情应该如何运行。
发布于 2015-10-26 02:53:52
另外:我刚刚发现,如果您给视图一个不透明的背景,使其无效不会使基础视图失效。这不是一个完美的解决方案,但它是一个相当好的解决方案。
现在我需要看看是否有可能制作一个非矩形形状的视图。
https://stackoverflow.com/questions/33325656
复制相似问题