Façon de déterminer avec précision la hauteur mesurée de vue, avant même qu'il a changé de PARTI VISIBLE

Actuellement, j'ai une mise en page qui ressemble à ceci. Il contient.

  • Texte de titre de la vue, et le Prix de la vue du texte, qui est toujours visible.
  • Description de l'Affichage du Texte de, qui peuvent être visibles ou disparu, en fonction de l'expansion ou de s'effondrer.

De s'effondrer (Pendant l'application de démarrage)

Façon de déterminer avec précision la hauteur mesurée de vue, avant même qu'il a changé de PARTI VISIBLE

Expansion (Lorsque l'utilisateur appuie dessus)

Façon de déterminer avec précision la hauteur mesurée de vue, avant même qu'il a changé de PARTI VISIBLE

Je veux avoir quelques belles animation autour d'elle. Donc, j'ai parlé de https://stackoverflow.com/a/13381228/72437

L'un de l'élément clé, c'est de savoir la taille exacte de Description de l'Affichage du Texte de, avant même qu'il soit visible.

Cependant, je me rends compte un peu de type de code. Ils sont pas précises

//v is description text view.
v.measure(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
final int targtetHeight = v.getMeasuredHeight();

//v is description text view.
v.measure(MeasureSpec.makeMeasureSpec(LayoutParams.MATCH_PARENT, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(LayoutParams.WRAP_CONTENT, MeasureSpec.EXACTLY));
final int targtetHeight = v.getMeasuredHeight();

Ce sera le retour de la valeur 32. (La bonne hauteur mesurée supposons que 92). C'est la hauteur de la première ligne de texte. Ceci termine mon animation est terminée à

Façon de déterminer avec précision la hauteur mesurée de vue, avant même qu'il a changé de PARTI VISIBLE

Mai je sais, ce est la bonne façon de déterminer la hauteur mesurée de vue, avant même qu'il a changé de PARTI VISIBLE?

Ma mise en page de code est comme suit :

        <LinearLayout
            android:clickable="true"
            android:id="@+id/chart_linear_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:background="@drawable/dummy"
            android:orientation="vertical">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="10dp"
                android:orientation="horizontal">
                <TextView
                    android:layout_width="0dp"
                    android:width="0dp"
                    android:layout_weight="0.6"
                    android:layout_height="match_parent"
                    android:gravity="left"
                    android:textSize="20sp" 
                    android:textColor="#ff000000"
                    android:text="Summary chart" />
                <TextView
                    android:id="@+id/chart_price_text_view"
                    android:layout_width="0dp"
                    android:width="0dp"
                    android:layout_weight="0.4"
                    android:layout_height="match_parent"
                    android:gravity="right"
                    android:textSize="20sp" 
                    android:textColor="#ffF76D3C"
                    android:text="$2.99" />

            </LinearLayout>
            <TextView
                android:visibility="gone"
                android:id="@+id/chart_description_text_view"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:layout_marginBottom="10dp"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"         
                android:text="@string/currency_exchange_description"
                android:textColor="#ff626262"
                android:textSize="15sp" />                 
        </LinearLayout>
Sauf si vous savez combien de lignes le texte prendra, il n'y a pas un moyen de le mesurer avant c'est mesuré. Un hack moyen de le faire pourrait être de les mettre tous à INVISIBLE plutôt que disparu au début, de mesurer, puis GONE immédiatement après. Si vous n'avez que quelques points de vue, ce ne pas être perceptible par l'utilisateur.
Avez-vous une explication des raisons pour lesquelles plusieurs enveloppé ligne ne fonctionne pas? J'ai pensé v. mesure(... devrait fonctionner (Bien que cela ne fonctionne pas pour le moment)
Pas sûr, mais je pense que c'est juste la mesure de ce qu'il attend pour un TextView en général. Il ne peut pas encore réaliser, il aura besoin de plusieurs lignes.

OriginalL'auteur Cheok Yan Cheng | 2013-10-08