106 votes

Définition de la largeur à wrap_content pour TextView via le code

Quelqu'un peut-il m'aider à définir la largeur de TextView à wrap_content via le code et non à partir de XML ?

Je crée dynamiquement un TextView dans le code, donc existe-t-il de toute façon comment définir sa largeur sur wrap_content via le code ?

141voto

Franco Points 3426
TextView pf = new TextView(context);
pf.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

Pour différentes mises en page comme ConstraintLayout et autres, ils ont leur propre LayoutParams , comme ceci :

 pf.setLayoutParams(new ConstraintLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 

ou alors

 parentView.addView(pf, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

86voto

Dmitry Points 588

Il existe une autre façon d'obtenir le même résultat. Au cas où vous n'auriez besoin de définir qu'un seul paramètre, par exemple « hauteur » :

 TextView textView = (TextView)findViewById(R.id.text_view);
ViewGroup.LayoutParams params = textView.getLayoutParams();
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
textView.setLayoutParams(params);

52voto

Phan Van Linh Points 16963

Solution pour modifier la largeur TextView pour envelopper le contenu .

 textView.getLayoutParams().width = ViewGroup.LayoutParams.WRAP_CONTENT; 
textView.requestLayout();  
// Call requestLayout() for redraw your TextView when your TextView is already drawn (laid out) (eg: you update TextView width when click a Button). 
// If your TextView is drawing you may not need requestLayout() (eg: you change TextView width inside onCreate()). However if you call it, it still working well => for easy: always use requestLayout()

// Another useful example
// textView.getLayoutParams().width = 200; // For change `TextView` width to 200 pixel

13voto

Zonic Points 135

Une petite mise à jour sur ce post : si vous utilisez ktx dans votre projet Android, il existe une petite méthode d'aide qui facilite beaucoup la mise à jour de LayoutParams.

Si vous souhaitez mettre à jour, par exemple, uniquement la largeur, vous pouvez le faire avec la ligne suivante dans Kotlin.

 tv.updateLayoutParams { width = WRAP_CONTENT }

5voto

Aadarsh Mathur Points 51

Je publie un texte d'édition multi-lignes de base Java pour Android.

 EditText editText = findViewById(R.id.editText);/* edittext access */

ViewGroup.LayoutParams params  =  editText.getLayoutParams(); 
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
editText.setLayoutParams(params); /* Gives as much height for multi line*/

editText.setSingleLine(false); /* Makes it Multi line */

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X