gpt4 book ai didi

android - 布局的 getHeight() 由 ViewTreeObserver 返回零

转载 作者:太空狗 更新时间:2023-10-29 15:34:39 26 4
gpt4 key购买 nike

我在 OnCreate 方法中使用 ViewTreeObserver 来获取我的工具栏和底部布局的高度,但我仍然得到 0 高度,为什么?我做错了什么吗?

我是这样调用的:

ViewTreeObserver viewTreeObserver = toolbar.getViewTreeObserver();
viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onGlobalLayout() {
// Ensure you call it only once :
toolbar.getViewTreeObserver().removeOnGlobalLayoutListener(this);
height1 = toolbar.getMeasuredHeight();
}
});

final LinearLayout linearLayout = (LinearLayout) findViewById(R.id.bottom);
ViewTreeObserver vto = linearLayout.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onGlobalLayout() {
// Ensure you call it only once :
linearLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
height2 = linearLayout.getMeasuredHeight();

}
});

Toast.makeText(getApplicationContext(), String.valueOf(height1) + String.valueOf(height2), Toast.LENGTH_SHORT).show();

最佳答案

看起来您的布局必须进行多次测量/布局通过,并且布局的各个部分在第一次通过后尺寸为零。仅当您具有正尺寸时才尝试删除 OnGlobalLayoutListener。像这样:

if (linearLayout.getMeasuredHeight() > 0) {
linearLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}

关于android - 布局的 getHeight() 由 ViewTreeObserver 返回零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31515176/

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