2017-08-24 12 views
1

J'ai une mise en page complexe qui a TextView avec layout_width="wrap_content". Je veux obtenir la largeur maximale que ce TextView peut remplir.Obtenir la largeur disponible pour TextView avec layout_width = "wrap_content"

Existe-t-il un moyen universel de le faire? Ou devrais-je passer en revue tous les parents et calculer leurs marges, paddings, etc? Comment Android le fait-il?

+0

Problème XY? Pourquoi avez-vous besoin de la largeur maximale possible? Que diriez-vous d'android: maxWidth? –

+0

J'ai besoin de la largeur maximale possible pour calculer manuellement l'ajustement du texte sur une ligne ou non et changez ce texte en conséquence. Je n'utilise pas maxWidth. – Dem0n13

+0

Il est probablement préférable de calculer la taille du texte et de l'ajuster jusqu'à ce que ça corresponde. –

Répondre

0

Vous pouvez obtenir son parent et calculer sa largeur comme ceci. Cette largeur correspond à la largeur maximale que peut prendre le TextView, à condition que le parent ne soit pas rembourré.

View parent = (View) textView.getParent(); 
int width = parent.getWidth(); 

Si le parent a un certain remplissage, vous devrez le calculer séparément et soustraire de cette largeur.

int paddingE = parent.getPaddingEnd(); 
int paddingS = parent.getPaddingStart(); 
int totalWidth = width - (paddingE + paddingS); 
+0

Est-il correct pour les parents avec 'layout_width =" wrap_content "' et 'layout_width =" match_parent "'? J'ai besoin de plus de façon universelle. – Dem0n13

+0

Qu'entendez-vous par * plus de manière universelle *? Cela ** vous donnera ** la largeur maximale que 'textView' peut prendre dans son parent indépendamment des paramètres de largeur du parent. –

+0

ok, j'essaie d'expliquer. Parent LinearLayout a 'layout_width =" wrap_content "', donc parent.getWidth() renvoie zéro, s'il n'a pas été rendu, ou la largeur des enfants internes, mais pas l'espace disponible maximum. – Dem0n13