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)
Expansion (Lorsque l'utilisateur appuie dessus)
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 à
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>
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
Vous devez vous connecter pour publier un commentaire.
Votre 2ème extrait de code est presque correct, mais vous devez spécifier des tailles de pixel - pas
FILL_PARENT/MATCH_PARENT
. Cela devrait fonctionner:Vous aurez besoin d'avoir une référence à la ViewGroup que
v
est un enfant de pour obtenir sa largeur, et de définirMAX_HEIGHT
(ou peut-être utiliser la Vue parent de hauteur?).Aussi, vous devez modifier la hauteur des paramètres des deux TextViews qui sont à l'intérieur de l'horizontale LinearLayout à
wrap_content
, comme l'aidematch_parent
ici peut causer des problèmes. Le LinearLayout est fixé à wrap_content, mais les deux enfants ne spécifiez pas une hauteur.Qui m'a aidé aussi, mais dans mon cas ce n'était pas l'histoire complète. C'est ainsi que j'ai enfin résolu: stackoverflow.com/a/36184454/854396
OriginalL'auteur nmw
Je l'ai accompli pour mon composant accordion. J'ai été confronté exactement le même problème, d'élargir mon accordéon qui a requis la "destination" de la hauteur, c'est la hauteur qu'il faudrait, après l'extension.
Ceci renvoie à la bonne hauteur:
Vous pouvez prendre un coup d'oeil à l'accordéon du composant et de l'animation sur GitHub: Android Accordéon Vue
OriginalL'auteur Riya Gayasen