Android Invalidate() 仅限单个视图

发布于 2024-12-15 06:31:18 字数 180 浏览 1 评论 0原文

我在 RelativeLayout 上有 2 个视图

,当我尝试 view1.invalidate(); 时,我只需要调用(call)onDraw单个视图

;它也调用(call)onDraw(view2绘制) )

该怎么办?

谢谢

I have 2 views on RelativeLayout

I need to invoke(call) onDraw only single view

when I try view1.invalidate(); it also invoke(call) onDraw (view2 draw)

what to do?

thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

来世叙缘 2024-12-22 06:31:18

如果当您调用 view1.invalidate(); 时,如果 view1view2 重叠,它将重新绘制与其重叠的每个视图。所以它会调用 view2.onDraw(); 并且由于您使用的是 RelativeLayout view1 和 view2 可能彼此重叠。

if view1 is overlapping with view2 when you call view1.invalidate(); it will re-draw every View that is overlapping with it .. so it will call view2.onDraw(); and since you are using RelativeLayout view1 and view2 maybe overlapped each other .

ぃ弥猫深巷。 2024-12-22 06:31:18

我遇到了同样的问题。

最后,我发现在android 2.3中绘图缓存被禁用了。由于没有缓存,每次视图都会重绘自己,即使对方失效。

要启用缓存,请使用:

setDrawingCacheEnabled(true)

问题太旧了,但当我搜索时,谷歌将其放在第一位。我认为这对于进入这里的其他人很有用。

I met the same question.

Finally, I found that drawing cache is disabled in android 2.3. Because of no cache, each time the view will redraw itself even the other invalidated.

To make cache enable, use:

setDrawingCacheEnabled(true)

The question is too old, but google put it first when I searched. I think it is useful for others who get into here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文