首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >forceLayout()、requestLayout()和invalidate()的用法

forceLayout()、requestLayout()和invalidate()的用法
EN

Stack Overflow用户
提问于 2012-12-13 16:55:06
回答 3查看 109.8K关注 0票数 208

我对View类的forceLayout()requestLayout()invalidate()方法的角色有点困惑。

应该在什么时候调用它们?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-15 18:44:21

为了更好地理解François BOURLIEUXDalvik提供的答案,我建议你看看Arpit Mathur提供的这个很棒的视图生命周期图:

票数 392
EN

Stack Overflow用户

发布于 2012-12-13 18:51:19

在这里你可以找到一些响应:http://developer.android.com/guide/topics/ui/how-android-draws.html

对我来说,调用invalidate()只会刷新视图,而调用requestLayout()会刷新视图并计算屏幕上视图的大小。

票数 29
EN

Stack Overflow用户

发布于 2014-07-19 08:14:59

在想要重画的视图上使用requestLayout(),它将使其onDraw(Canvas c)被调用,而requestLayout()将再次运行整个布局呈现(测量阶段和定位阶段)。如果您要在运行时更改子视图的大小,但仅在特定情况下,如来自父视图的约束(我的意思是父视图的高度或宽度为WRAP_CONTENT,因此在再次包装它们之前匹配测量子视图),则应该使用它。

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

https://stackoverflow.com/questions/13856180

复制
相关文章

相似问题

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