Animacja wysokości kontenera LinearLayout z ValueAnimator

Mam LinearLayout, którego używam jako kontener dla niektórych przycisków i widoków tekstowych, które chciałbym animować na wysokość, aby dać wrażenie, że układ zsuwa się, gdy użytkownik naciska przycisk „pokaż”.

Ustawiłem LinearLayout na layout_height = "0dp" i visibility = "gone" w moim pliku XML. Następnie chcę ustawić, aby była widoczna i niezależnie od wysokości, aby zawinąć zawartość. W tej chwili mam problemy nawet z animowaniem, nigdy nie myśl o wysokości zawartości zawijania.

Oto moja metoda animowania:

private void toggle(final LinearLayout v) {
    v.setVisibility(View.VISIBLE);
    ValueAnimator va = ValueAnimator.ofInt(0, 300);
    va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        public void onAnimationUpdate(ValueAnimator animation) {
            Integer value = (Integer) animation.getAnimatedValue();
            v.getLayoutParams().height = value.intValue();
            v.invalidate();

        }
    });

    va.start();
}

Być może problem polega na tym, jak ustawiam wysokość LinearLayout? Czy może źle rozumiem funkcję ValueAnimatora? Zajrzałem na blogu Cheta Haase'a, ale nie zawierają one żadnych konkretnych przykładów animacji wysokości. Nie udało mi się znaleźć i dobrych przykładów pracy z animacjami wysokości za pomocą API z wersji 3.0+. Chciałbym w tym pomóc, dzięki!

questionAnswers(1)

yourAnswerToTheQuestion