Sergei Buvaka Asked:2020-06-13 17:55:27 +0000 UTC2020-06-13 17:55:27 +0000 UTC 2020-06-13 17:55:27 +0000 UTC 在 View 类中使用 forceLayout()、requestLayout() 和 invalidate() 772 有人可以向我解释这些方法是如何工作的吗?你应该什么时候使用每个?它们之间的主要区别是什么? android 1 个回答 Voted Best Answer Andrew 2020-06-13T18:14:29Z2020-06-13T18:14:29Z 让我们从inValidate()(文档)开始: invalidate ()当您要安排重绘时会进行调用View。这将导致onDraw最终调用的内容(很快,但不是立即)。View自定义何时调用它的一个示例是文本或背景颜色属性已更改时。 进一步requestLayout()(再次文档): 如果您的视图中的某些内容发生了影响大小的变化,您应该调用requestLayout (). 这不仅会为该 View 调用 onMeasure 和 onLayout ,而且会调用父 View 的行。 该调用requestLayout ()不保证会导致 onDraw,因此它通常与invalidate(). ForceLayout()(并再次停靠) forceLayout ()requestLayout()仅当与直接父级一起调用时才对子级有效。调用 forceLayout ()本身不会产生任何影响,因为它不会调用requestLayout ()视图树。 这是另一个示意图: android是如何绘制的(码头)类似的问题1、2和一个有趣的答案。有关该主题的文章。 GitHub讨论。 可能的主要文本信息来源(我没有从这里获取信息:)) 用于查看的API 文档。我希望我能帮助你回答这个问题:)
让我们从
inValidate()(文档)开始:进一步
requestLayout()(再次文档):ForceLayout()(并再次停靠)这是另一个示意图:
android是如何绘制的(码头)类似的问题1、2和一个有趣的答案。有关该主题的文章。
GitHub讨论。
可能的主要文本信息来源(我没有从这里获取信息:))
用于查看的API 文档。我希望我能帮助你回答这个问题:)