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

时间:2015-05-10 10:47:35

标签: android android-layout

注意:

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

有什么建议吗?

2 个答案:

答案 0 :(得分: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 );
    }

});

答案 1 :(得分:0)

实际上还有另一种方式,我过去习惯使用它来制作一些自定义的东西,但它会定义为你工作

final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
       void run() {
            if(view.getHeight() == 0) {
                 handler.postDelayed(this, 50);
            } else {
                 // you're all set
            }
       }
}, 50);

希望这会有所帮助