Animação de altura do contêiner LinearLayout com ValueAnimator

Eu tenho um LinearLayout que eu uso como um contêiner para alguns botões e textview que eu gostaria de animar a altura de dar uma impressão do layout deslizando para baixo quando o usuário pressiona um botão "show".

Eu configurei o LinearLayout para layout_height = "0dp" e visibility = "gone" em meu xml. Desejo, então, configurá-lo para ser visível e qualquer altura é necessário para envolver o conteúdo. No momento, estou tendo problemas até mesmo animando-o, esqueça a altura do conteúdo do wrap.

Aqui está o meu método para animar:

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

Talvez o problema seja como eu estou definindo a altura do LinearLayout? Ou estou entendendo mal a função do ValueAnimator? Eu olhei em volta na postagem do blog por Chet Haase, mas eles não contêm nenhum exemplo específico de animação de altura. Também não consegui encontrar bons exemplos de como trabalhar com animações de altura usando APIs do 3.0+. Adoraria alguma ajuda sobre isso, obrigado!

questionAnswers(1)

yourAnswerToTheQuestion