首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我可以重绘一个视图而不强制基础视图的重绘吗?

我可以重绘一个视图而不强制基础视图的重绘吗?
EN

Stack Overflow用户
提问于 2015-10-25 02:47:37
回答 2查看 288关注 0票数 0

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

是否有任何方法来更新顶部视图而不强制完全重新绘制底部视图?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-25 08:38:21

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

尽管如此,您可以在您自己的自定义dispatchDraw()中重写ViewGroup方法,并处理事情应该如何运行。

票数 1
EN

Stack Overflow用户

发布于 2015-10-26 02:53:52

另外:我刚刚发现,如果您给视图一个不透明的背景,使其无效不会使基础视图失效。这不是一个完美的解决方案,但它是一个相当好的解决方案。

现在我需要看看是否有可能制作一个非矩形形状的视图。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33325656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档