gpt4 book ai didi

android - removeAllViews() 和 removeAllViewsInLayout() 有什么区别

转载 作者:IT王子 更新时间:2023-10-28 23:41:36 46 4
gpt4 key购买 nike

我正在动态填充线性布局。根据响应,我必须清除过去的 subview 并创建新 View 。我已经阅读了文档,但仍然对这几种方法感到困惑,它们看起来都具有相同的功能。我应该使用哪个函数。

最佳答案

正如 Scott Biggs 所指出的,差异并不大。唯一的区别是 removeAllViews() 之后调用 requestLayout()invalidate() 。之所以会出现这种差异,关键在于理解removeAllViewInLayout()的命名。令人困惑的是,它的意思并不是“删除此 View 布局中的所有 View ”。

If we look at the similar method, removeViewInLayout(), we can understand what it's supposed to mean:

Removes a view during layout. This is useful if in your onLayout() method, you need to remove more views.

所以 removeAllViewsInLayout() 实际上意味着“删除所有 View ,我们在布局传递期间调用此方法(即 onLayout())”。这就是 removeAllViewsInLayout() 不调用 requestLayout() 的原因,因为它假定您当前已经在布局 channel 中,因此不需要请求另一个布局 channel .

如果您使用 removeAllViewsInLayout(),那么您有责任确保在布局过程中调用它,或者正确调用 requestLayout()invalidate() 根据需要。

关于android - removeAllViews() 和 removeAllViewsInLayout() 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11952598/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com