¿Por qué se envuelve el contenido en la línea múltiple TextView fill parent?
Tengo una vista de texto de varias líneas definida en android:layout_width="wrap_content"
que, cuando se procesa, toma todo el ancho disponible del padre. Cuando el texto puede caber en una línea, el wrap_content
funciona bien, pero en dos o más líneas, la vista de texto parece coincidir con el ancho de los padres, dejando lo que parece relleno a cada lado.
Debido a que el texto no puede encajar en una línea, ¿es la vista de texto asumiendo que requiere toda la anchura disponible? Quiero que la vista esté limitada por las dimensiones más pequeñas posibles.
- Cómo cambiar fontFamily de TextView en Android
- .length () vs .getText (). Length () vs .getText (). ToString (). Length ()
- Vínculos con varios clics en TextView en Android
- Desplazamiento vertical automático TextView con texto que contiene un enlace de sitio web
- ¿Cómo repetir textview?
¿Algunas ideas?
Para referencia, aquí está la definición del diseño:
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:singleLine="false" android:textSize="24sp" android:textStyle="bold" android:textColor="@color/white" android:gravity="center_horizontal" />
- Cómo agregar elipses al texto StaticLayout cuando supera su altura?
- Cómo permitir al usuario para seleccionar un rango de texto en un TextView (similar a EditText)
- Android: cómo agregar Icono en el lado izquierdo de la TextView
- Detectar si TextView abarca más de 2 líneas
- Cómo cambiar el color de las palabras con hashtags
- Cómo cambiar programaticamente un TextView a un ImageView y volver
- Cómo cambiar el color de la barra de herramientas de selección de texto que viene cuando copiamos un texto?
- Posición aleatoria de TextView
Tuve el mismo problema también … Usted puede utilizar personalizado TextView con el método sobreescrito onMeasure () donde se calcula el ancho:
public class WrapWidthTextView extends TextView { ... @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); Layout layout = getLayout(); if (layout != null) { int width = (int) Math.ceil(getMaxLineWidth(layout)) + getCompoundPaddingLeft() + getCompoundPaddingRight(); int height = getMeasuredHeight(); setMeasuredDimension(width, height); } } private float getMaxLineWidth(Layout layout) { float max_width = 0.0f; int lines = layout.getLineCount(); for (int i = 0; i < lines; i++) { if (layout.getLineWidth(i) > max_width) { max_width = layout.getLineWidth(i); } } return max_width; } }
- Cómo llamar a REST API desde una aplicación de Android
- No se puede realizar esta acción dentro de onLoadFinished