我在用视图树观察者 in OnCreate获取工具栏和底部布局高度的方法,但我仍然得到0 height, 为什么?难道我做错了什么?
这就是我的调用方式:
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);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)