Android:可以在绘制之前计算视图的高度吗?

Sah*_*Avr 5 android android-layout

笔记:

  • 我不想使用任何getViewTreeObserver()侦听器或任何侦听器.我想绘制之前计算视图的高度.
  • 我尝试了getMeasuredHeight(),但每次都返回0.

有什么建议?

Bid*_*han 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 );
    }

});
Run Code Online (Sandbox Code Playgroud)