
正文
Android 计算view 的高度
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
上午在做一个QuickAction里嵌套一个ListView,在Demo运行没事,结果引入到我的项目里,发现我先让它在Button上面,结果是无视那个Button的高度,这很明显,就是那个Button的高度计算不正确。
看了下别人的建议,大概分为三类:
参数设置:mRootView.measure(0, 0);
在draw之前回调:ViewTreeObserver vto =view.getViewTreeObserver(); vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @Override
publicboolean onPreDraw() { intheight =view.getMeasuredHeight(); intwidth =view.getMeasuredWidth(); }});
mRootView.measure(0, 0);
ViewTreeObserver vto =view.getViewTreeObserver(); vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @Override
publicboolean onPreDraw() { intheight =view.getMeasuredHeight(); intwidth =view.getMeasuredWidth(); }});
全部监听://增加整体布局监听ViewTreeObserver
vto = view.getViewTreeObserver(); vto.addOnGlobalLayoutListener(newOnGlobalLayoutListener(){ @Override publicvoidonGlobalLayout() { view.getViewTreeObserver().removeGlobalOnLayoutListener(this); intheight =view.getMeasuredHeight(); intwidth =view.getMeasuredWidth(); } });
//增加整体布局监听ViewTreeObserver
vto = view.getViewTreeObserver(); vto.addOnGlobalLayoutListener(newOnGlobalLayoutListener(){ @Override publicvoidonGlobalLayout() { view.getViewTreeObserver().removeGlobalOnLayoutListener(this); intheight =view.getMeasuredHeight(); intwidth =view.getMeasuredWidth(); } });






