Android RecyclerView lisse de défilement pour afficher l'animation de leur hauteur

J'ai un RecyclerView Extensible Vues Enfant, lorsque l'enfant ViewGroup est cliqué, cela gonfle un montant de points de vue de l'animation de la ViewGroup hauteur de 0 à la valeur mesurée viewgroup la hauteur, comme les suivants en gif:

Android RecyclerView lisse de défilement pour afficher l'animation de leur hauteur

Le problème est: je vais appeler smoothScrollToPosition sur recyclerView, il lisse, faites défiler jusqu'à la position de la vue, mais il considère le point de vue actuel de la hauteur, ce qui n'est pas encore développé, dans le gif ci-dessus, je suis toucher sur la vertu de vue de la recyclerview, qui ne faites défiler jusqu'à la position, parce que la vue est déjà visible, mais quand je touche à nouveau (l'appel de la smoothscrolltoposition encore) faire défiler l'affichage jusqu'à la position correcte, parce que la vue est déjà développée.

Est-il de toute approche pour faire défiler l'affichage vers le haut de l'écran ou faites défiler jusqu'à rendre le contenu visible?

Pour les références:
C'est la méthode dite de gonfler les points de vue:

collapsible_content.removeAllViews();
for(int i = 0; i < 5; i++) {
        View link_view = getLayoutInflater().inflate(R.layout.list_item_timeline_step_link, collapsible_content, false);
        TextView text = (TextView) link_view.findViewById(R.id.step_link_text);
        text.setText("Test");
        collapsible_content.addView(link_view);
    }

Et c'est ma méthode pour développer:

public void toggle() {
        collapsible_content.measure(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        Animation a;
        if (mExpanded) {
            a = new ExpandAnimation(collapsible_content.getLayoutParams().height, 0);
        } else {
            a = new ExpandAnimation(collapsible_content.getLayoutParams().height, getMeasuredHeight());
        }
        a.setDuration(mAnimationDuration);
        collapsible_content.startAnimation(a);
        mExpanded = !mExpanded;
    }

Et de l'animation:

private class ExpandAnimation extends Animation {
        private final int mStartHeight;
        private final int mDeltaHeight;

        public ExpandAnimation(int startHeight, int endHeight) {
            mStartHeight = startHeight;
            mDeltaHeight = endHeight - startHeight;
        }

        @Override
        protected void applyTransformation(float interpolatedTime,
                                           Transformation t) {
            final int newHeight = (int) (mStartHeight + mDeltaHeight *
                    interpolatedTime);
            collapsible_content getLayoutParams().height = newHeight;

            if (newHeight <= 0) {
                collapsible_content setVisibility(View.GONE);
            } else {
                collapsible_content setVisibility(View.VISIBLE);
            }
            collapsible_content requestLayout();
        }


        @Override
        public boolean willChangeBounds() {
            return true;
        }
    }

OriginalL'auteur Yuri Heupa | 2015-01-19