アニメーションでは、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 );
}
});