对于动画,我需要从View知道高度。问题是,除非绘制了View,否则getHeight()方法始终返回0。
那么有没有办法在不绘制高度的情况下获得高度?

在这种情况下,View是LinearLayout。

编辑:
我尝试改编https://github.com/Udinic/SmallExamples/blob/master/ExpandAnimationExample/src/com/udinic/expand_animation_example/ExpandAnimation.java中的展开动画

有了它,我想扩展一个列表项的更多信息。
我无法通过xml达到相同的效果。
目前,只有在绘制前知道布局大小时,动画才起作用。

最佳答案

听起来好像您想获取高度,但在 View 可见之前将其隐藏。

首先将 View 中的可见性设置为可见或不可见(只是为了创建高度)。不用担心,我们将在代码中将其更改为不可见/消失,如下所示:

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();  // Ahaha!  Gotcha

            mView.getViewTreeObserver().removeGlobalOnLayoutListener( this );
            mView.setVisibility( View.GONE );
        }

});

09-27 23:49