Android TextView El texto no se envuelve

¿Puede alguien decirme qué está mal con el texto? Texto de más de una línea no se ajusta a la línea siguiente pero va más allá de la pantalla.

El siguiente es el código:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="4dip"> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="4dip"> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="4dip"> <TextView android:id="@+id/reviewItemEntityName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="event/venue" android:textColor="@color/maroon" android:singleLine="true" android:ellipsize="end" android:textSize="14sp" android:textStyle="bold" android:layout_weight="1" /> <ImageView android:id="@+id/reviewItemStarRating" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignParentBottom="true" android:src="@drawable/title_1_star" /> </LinearLayout> <TextView android:id="@+id/reviewItemDescription" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Description comes here" android:textSize="12sp" android:layout_weight="1"/> </LinearLayout> </LinearLayout> 

Lo arreglé yo mismo, la clave es android:width="0dip"

 <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:padding="4dip" android:layout_weight="1"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="4dip"> <TextView android:id="@+id/reviewItemEntityName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/maroon" android:singleLine="true" android:ellipsize="end" android:textSize="14sp" android:textStyle="bold" android:layout_weight="1" /> <ImageView android:id="@+id/reviewItemStarRating" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignParentBottom="true" /> </LinearLayout> <TextView android:id="@+id/reviewItemDescription" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="12sp" android:width="0dip" /> </LinearLayout> <ImageView android:id="@+id/widget01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/arrow_nxt" android:layout_gravity="center_vertical" android:paddingRight="5dip" /> </LinearLayout> 

La única respuesta correcta a esta pregunta es que es necesario establecer los padres con un ancho adecuado (en este caso FILL_PARENT , WRAP_CONTENT ) y usar android:layout_weight=1 para la vista de texto que debe ser envuelta.

SingleLine está SingleLine por defecto para que no se realicen cambios.

Un width ajustado a 0px funcionará, pero no es una buena solución.

Algunos ejemplos (en una tabla de esta vez), utilizando xml:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <TableLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:stretchColumns="*" android:id="@+id/tableLayout1"> <TableRow android:id="@+id/tableRow1" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:text="test1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="0" /> <TextView android:layout_weight="1" android:text="test2 very long text that needs to be wrapped properly using layout_weight property and ignoring singleline since that is set by default..." android:layout_width="fill_parent" android:layout_height="wrap_content" /> </TableRow> </TableLayout> </LinearLayout> 

Si desea establecer esto en código, está buscando el layout_weight como un tercer parámetro como en este ejemplo donde se establece en 1:

 row.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); TextView label = new TextView(getApplicationContext()); label.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, 1f)); 

Debe utilizar 2 parámetros:

  • android:ellipsize="none" : el texto no se corta en el ancho del texto

  • android:scrollHorizontally="false" el texto se enrolla en tantas líneas como sea necesario

Es suficiente usarlo en su archivo xml.

 android:singleLine="false". 

Espero que funcione.

¡Todo lo mejor!

No pude conseguir ninguna de estas soluciones que trabajan al usar un TableLayout>TableRow>TextView . Entonces encontré TableLayout.shrinkColumns="*" . La única otra solución que funcionó fue forzar el TextView a layout_width:250px etc, pero no me gusta forzar anchos como eso.

Pruebe algo como esto si trabaja con tablas.

  <TableLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:shrinkColumns="*"> 

Tenga en cuenta que necesita shrinkColumns="*"

Esto es, obviamente, dentro de un <LinearLayout> . Así algo como <LinearLayout> <TableLayout> <TableRow> <TextView>

Referencias:

TableLayout

http://code.google.com/p/android/issues/detail?id=4000

Espero que ayude a alguien.

Uno de los parámetros de diseño es incorrecto en su código. En el primer TextView

 android:layout_width="wrap_content" 

cambiar a

 android:layout_width="fill_parent" 

El texto que fuera del tamaño de ancho de pantalla se ajustará a la siguiente línea y establecerá android:singleline="false" .

Soy un principiante de Android (y GUI), pero tengo mucha experiencia con el software. He pasado por algunos de los tutoriales, y esta es mi comprensión:

Layout_width y layout_height son atributos de TextView. Son instrucciones para cómo el TextView debe conformarse, no se refieren a cómo manejar el contenido dentro de TextView.

Si utiliza "fill_parent", está diciendo que el TextView debe conformarse con respecto a su vista principal, debe rellenarlo.

Si utiliza "wrap_content", está diciendo que debe ignorar la vista principal y dejar que el contenido de TextView defina su forma.

Creo que este es el punto confuso. "Wrap_content" no le está diciendo a TextView cómo administrar su contenido (para envolver las líneas), le está diciendo que debe conformarse con respecto a su contenido. En este caso, sin nuevos caracteres de línea, se forma a sí mismo para que todo el texto esté en una sola línea (que desafortunadamente está desbordando al padre).

Creo que quieres que llene el padre horizontalmente, y para envolver su contenido verticalmente.

Establece la altura de la vista de texto android:minHeight="some pixes" o android:width="some pixels" . Solucionará el problema.

Para mi caso la eliminación de tipo de entrada hizo el truco, yo estaba usando android: inputType = "textPostalAddress" debido a que mi texto se pegó a una línea y no se envoltura, la eliminación de esta arregló el problema.

Incluso, aunque este es un viejo hilo, me gustaría compartir mi experiencia ya que me ayudó. Mi aplicación estaba funcionando bien para OS 2.0 y 4.0 + pero para un teléfono de HTC que funcionaba OS 3.x el texto no estaba envolviendo. Lo que funcionó para mí fue incluir ambas etiquetas.

 android:maxLines="100" android:scrollHorizontally="false" 

Si elimina o no estaba funcionando sólo para el dispositivo os 3.0. El parámetro "elipsis" tuvo un efecto neutro. Aquí está la etiqueta de texto completo a continuación

 <TextView android:id="@+id/cell_description" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingTop="5dp" android:maxLines="100" android:scrollHorizontally="false" android:textStyle="normal" android:textSize="11sp" android:textColor="@color/listcell_detail"/> 

Espero que esto ayude a alguien.

Aumentar la altura es decir. Android: height = "Some size", está funcionando bien para mí.

He utilizado android:ems="23" para resolver mi problema. Simplemente reemplace 23 con el mejor valor en su caso.

 <TextView android:id="@+id/msg" android:ems="23" android:text="ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab " android:textColor="@color/white" android:textStyle="bold" android:layout_width="wrap_content" android:layout_height="wrap_content"/> 

Tuve un problema similar donde estaban mis dos horizontalmente ponderado TextViews no envolver el texto. Más tarde descubrí que el problema era porque mi padre de los viewparents tenía wrap_content en vez de match_parent.

Creo que depende de la combinación particular de diseños en su pantalla. Algunos indicadores pueden ser anulados o ignorados. Tengo un TabHost con las lengüetas, cada lengüeta es una lista de tablas. Así que es una pestaña de ListView, cada fila es un TableLayout de TextView. He probado los arreglos enumerados anteriormente y ninguno de ellos funcionó.

Pongo este atributo:

 android:inputType="textMultiLine" 

En mi TextView y tiene la línea de envoltura y el usuario puede "Enter" para una nueva línea.

============================================================================== Unesdoc.unesco.org unesdoc.unesco.org

Cuando llegue a este post, puede que desee crear un Big TextView que puede mostrar varias líneas para que estos atributos también pueden ser necesarios

 android:layout_height="Xdp" //where X is a number depends on how big Textview you want android:gravity="top" //in order to make your text start from the top of your TextView. 

Lo sé, que en cuestión es correcto, pero en mi caso, el problema estaba en el establecimiento de propiedad textSize en 'dp' – He cambiado a 'sp' y funciona bien.

En mi caso, con un TableRow > ScrollView > TextView anidar, he resuelto el problema mediante la configuración de android:layout_width a fill_parent en TableRow y wrap_content en ScrollView y TextView .

Usted tiene que utilizar android:singleLine="false" en ur etiquetas TextView .

Finalmente conseguí agregar algunos píxeles a la altura del TextView para resolver este problema.

Primero usted necesita realmente conseguir la altura del TextView. No es sencillo porque es 0 antes de que ya esté pintado.

Añadir este código a onCreate:

 mReceiveInfoTextView = (TextView) findViewById(R.id.receive_info_txt); if (mReceiveInfoTextView != null) { final ViewTreeObserver observer = mReceiveInfoTextView.getViewTreeObserver(); observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { int height = mReceiveInfoTextView.getHeight(); int addHeight = getResources().getDimensionPixelSize(R.dimen.view_add_height); mReceiveInfoTextView.setHeight(height + addHeight); // Remove the listener if possible ViewTreeObserver viewTreeObserver = mReceiveInfoTextView.getViewTreeObserver(); if (viewTreeObserver.isAlive()) { viewTreeObserver.removeOnGlobalLayoutListener(this); } } }); } 

Necesita agregar esta línea a dimens.xml

 <dimen name="view_add_height">10dp</dimen> 

Espero eso ayude.

Acabo de eliminar android:lines="1" y añadió android:maxLines="2" , esto consiguió el texto para envolver automáticamente. El problema fue el atributo android:lines . Que hace que el ajuste de texto no ocurra.

No tenía que usar maxEms o singleLine="false" (API obsoleto) para arreglar esto.

Añadí un \ n en el centro de mi cadena y se veía bien.

Para envolver el texto y poner el texto en la siguiente línea debemos usar el carácter "\ n" ie new line en el archivo xml de diseño y comprobar el cambio en el emulador no en la pantalla de diseño.

  • Android TextView: establecer dinámicamente el color de fondo no funciona
  • ¿Cómo puedo crear una vista de texto que cambie automáticamente su tamaño de fuente para que se ajuste al espacio?
  • Borde de desvanecimiento para TextView verticalmente desplazable
  • Cómo cambiar el color de fondo de TextView a valor inicial
  • TextView con diferentes fuentes y estilos?
  • ¿Es posible escalar drawableleft & drawableright en textview?
  • Cómo utilizar TextAppearanceSpan
  • ¿Cómo se utiliza EasyEditSpan en Android para permitir la edición parcial de texto?
  • Problema de diseño con Android: girado TextView
  • Obtener el texto visible actual en la vista de texto
  • Multilínea TextView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.