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?
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?
Respuestas:
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));
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);
LinearLayout
, no parece que ll.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
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 */
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.
tv.updateLayoutParams { width = WRAP_CONTENT }
android.view.ViewGroup$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams