Puede alguien ayudarme a cómo configurar el ancho de TextView
a wrap_content
través de código y no de XML?
Estoy creando dinámicamente un TextView
código en, entonces, ¿hay alguna forma de establecer su ancho a wrap_content
través del código?
TextView pf = new TextView(context);
pf.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
Para diferentes diseños como ConstraintLayout
y otros, tienen los suyos propios LayoutParams
, así:
pf.setLayoutParams(new ConstraintLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
o
parentView.addView(pf, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
android.view.ViewGroup$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams
Hay otra forma de lograr el mismo resultado. En caso de que necesite configurar solo un parámetro, por ejemplo 'altura':
TextView textView = (TextView)findViewById(R.id.text_view); ViewGroup.LayoutParams params = textView.getLayoutParams(); params.height = ViewGroup.LayoutParams.WRAP_CONTENT; textView.setLayoutParams(params);
fuente
LinearLayout
, no parece quell.invalidate()
sea necesario. ¿Por qué?Solución para cambiar el
TextView
ancho para envolver contenido .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
fuente
Estoy publicando texto de edición de múltiples líneas base de Android Java.
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 */
fuente
Creo que este código responde a tu pregunta.
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) holder.desc1.getLayoutParams(); params.height = RelativeLayout.LayoutParams.WRAP_CONTENT; holder.desc1.setLayoutParams(params);
fuente
Una pequeña actualización en esta publicación: si está utilizando ktx dentro de su proyecto de Android, hay un pequeño método de ayuda que hace que la actualización de LayoutParams sea mucho más fácil.
Si desea actualizar, por ejemplo, solo el ancho, puede hacerlo con la siguiente línea en Kotlin.
fuente