gpt4 book ai didi

java - 为什么我们使用 ViewTreeObserver#addOnGlobalLayoutListener()

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:34:32 29 4
gpt4 key购买 nike

为什么我们要使用ViewTreeObserver,谁能解释一下?

在下面的代码中,creditsViewTextView 对象。通过这整个代码,我明白“这是根据条件隐藏一些文本”,但唯一的问题是我们为什么使用 ViewTreeObserver?

mainLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int heightDiff = mainLayout.getRootView().getHeight() - mainLayout.getHeight();

if (heightDiff > 100) {
Utils.appLogger("MyActivity", "keyboard opened");
creditsView.setVisibility(View.GONE);
}

if (heightDiff < 100) {
Utils.appLogger("MyActivity", "keyboard closed");
creditsView.setVisibility(View.VISIBLE);
}
}
});

最佳答案

如果您没有使用 ViewTreeObserver,那么 mainLayout.getRootView().getHeight() 只会返回 0px,因为它还没有被布局(参见 getWidth() and getHeight() of View returns 0 )。

因此,您要等到 View 被测量、布局,然后您才能从中获取宽度/高度值。当 View 将要在屏幕上布局时,将触发此回调。

关于java - 为什么我们使用 ViewTreeObserver#addOnGlobalLayoutListener(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43633485/

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