gpt4 book ai didi

android - addOnLayoutChangeListener 与 addOnGlobalLayoutListener 与 post(Runnable r)

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:12:56 24 4
gpt4 key购买 nike

问题:假设我们有一个简单的案例:我们有 View ,我们必须在这个 View 上显示一些数据。我们使用静态方法 showData(View view) 来做到这一点。我想知道测量 View 布局的确切时间,我可以访问 getWidth() getHeight() 并确保这是我 View 的最终宽度和高度。

我所知道的:(不确定我 100% 正确):

我知道 3 种不同的方法来做到这一点

  • view.addOnLayoutChangeListener - 我们知道布局改变时,我们可以获取高度和宽度
  • view.getViewTreeObserver().addOnGlobalLayoutListener - 以我为例几乎相同,但我们稍后会获得信息。因为layout改变bubbles 从 children 到 root,globalLayout 从 root 到 children(对吗?)。
  • view.post(Runnable r) - 正在运行,但我不知道为什么 runnable 是发布到 ui 线程在测量 View 后执行。

问题:了解 View 是否经过衡量的最佳方法是什么?为什么?

最佳答案

What is the best approach to know that view is measured?

最佳方法? OnGlobalLayoutListenerView.getMeasuredHeight()View.getMeasuredWidth()

and why?

因为你妈妈比你自己更了解你,所以最好向 ViewGroup 咨询它的状态,它会自动说明 children 的情况。

View.post() 将进程排入 ui 队列。 Ui queue ={1,2},稍后调用该行 = {1,2,runnable}。所以它肯定会在 1,2 之后运行

关于android - addOnLayoutChangeListener 与 addOnGlobalLayoutListener 与 post(Runnable r),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30553745/

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