笔记:
我根本不想使用任何getViewTreeObserver()侦听器或任何侦听器。我想在绘制之前计算出视图的高度。
我尝试了getMeasuredHeight(),但每次都返回0。
有什么建议吗?
最佳答案
必须使用getViewTreeObserver()。您可以做的一件事是,将视图中的可见性设置为“可见”或“不可见”,然后在代码中将其更改为“不可见/消失”。例子:
private int mHeight = 0;
private View mView;
class...
// onCreate or onResume or onStart ...
mView = findViewByID(R.id.someID);
mView.getViewTreeObserver().addOnGlobalLayoutListener(
new OnGlobalLayoutListener(){
@Override
public void onGlobalLayout() {
// gets called after layout has been done but before display
// so we can get the height then hide the view
mHeight = mView.getHeight();
mView.getViewTreeObserver().removeGlobalOnLayoutListener( this );
mView.setVisibility( View.GONE );
}
});