Android: 描画される前にビューの高さを取得する 質問する

Android: 描画される前にビューの高さを取得する 質問する

アニメーションでは、View から高さを知る必要があります。問題は、View が描画されない限り、getHeight() メソッドは常に 0 を返すことです。描画せずに高さを取得する方法はあるのでしょうか?

この場合、View は LinearLayout です。

編集:拡大アニメーションを適応させようとしましたhttps://github.com/Udinic/SmallExamples/blob/master/ExpandAnimationExample/src/com/udinic/expand_animation_example/ExpandAnimation.java

これを使って、リスト項目の情報をもう少し拡張したいと思います。XML では同じ効果を実現できませんでした。現時点では、アニメーションは描画前にレイアウト サイズがわかっている場合にのみ機能します。

ベストアンサー1

高さを取得したいが、表示される前にビューを非表示にしたいようです。

まず、ビューの可視性を visible または invisible に設定します (高さが作成されるようにするため)。心配しないでください。以下に示すように、コードでこれを invisible/gone に変更します。

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 );
        }

});

おすすめ記事