笔记:
我根本不想使用任何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 );
    }

});

07-27 16:54