¿Alguien sabe cómo ajustar texto en TextView en la plataforma Android? es decir, si el texto en la vista de texto excede la longitud de la pantalla, debe mostrarse en la segunda línea.
He buscado y probado lo siguiente:
android:scrollHorizontally="false",
android:inputType="textMultiLine",
android:singleLine="false"
Pero ninguno funciona ...
¿Alguien puede sugerir cómo puedo hacerlo?
android:inputType="textPersonName"
. Aparentemente, fue agregado por la herramienta de diseño de Android Studio. ¡Eliminar ese atributo solucionó el problema! Puede haber otros tipos de entrada que también impidan el ajuste.Respuestas:
Para mí, este problema solo ocurrió en Android <4.0
La combinación de parámetros que utilicé fue:
android:layout_weight="1" android:ellipsize="none" android:maxLines="100" android:scrollHorizontally="false"
El recuento de maxLines parecía ser la pieza final aleatoria que hizo que mi TextView se ajustara.
fuente
match_parent
, que no es lo mismo que hacer que la altura de TextView se expanda para incluir las líneas adicionales.Diseño de restricción
<TextView android:id="@+id/some_textview" android:layout_width="0dp" android:layout_height="wrap_content" app:layout_constraintLeft_toLeftOf="@id/textview_above" app:layout_constraintRight_toLeftOf="@id/button_to_right"/>
android:maxLines="2"
para evitar la expansión vertical (2 es solo un ejemplo)android:ellipsize="end"
0dp width permite restricciones de izquierda / derecha para determinar qué tan ancho es su widget.
Establecer restricciones de izquierda / derecha establece el ancho real de su widget, dentro del cual se ajustará su texto.
Documentos de diseño de restricciones
fuente
Para el caso en el que
TextView
está dentro de aTableLayout
, la solución es establecerandroid:shrinkColumns="1"
enTableLayout
. (Reemplace1
con el número de columna en el que se encuentra el TextView que desea ajustar. (Indexado 0)AFAICT, no se necesitan otros atributos en el
TextView
.Para otros casos, vea las otras respuestas aquí.
FWIW, inicialmente había conseguido que funcionara con
<TextView android:id="@+id/inventory_text" android:layout_width="fill_parent" android:layout_weight="1" android:width="0dp"
pero eso resultó en un espacio vacío adicional en la parte inferior del diálogo en el que estaba todo.
fuente
Debes utilizar 2 parámetros:
android:ellipsize="none"
: el texto no se corta en el ancho de la vista de textoandroid:scrollHorizontally="false"
el texto se ajusta en tantas líneas como sea necesariofuente
Tiene tres valores constantes
<android.support.v7.widget.AppCompatTextView android:id="@+id/textquestion" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:scrollHorizontally="false" android:text="Your Question Display Hear....Your Question Display Hear....Your Question Display Hear....Your Question Display Hear...." android:textColor="@android:color/black" android:textSize="20sp" android:textStyle="bold" app:breakStrategy="simple" />
yourtextview.setBreakStrategy(Layout.BREAK_STRATEGY_SIMPLE);
Para obtener más referencias, consulte esta BreakStrategy
fuente
Esto debería solucionar el problema:
android:layout_weight="1"
.fuente
match_parent
. No es exactamente lo mismo que quería OP.layout_weight="1"
solucionó el problema por mí. Sin embargo, mi TableRow que contiene TextView, se habíalayout_height
establecido en un valor específico. Tal vez sea útil para alguienBien, chicos, la verdad está en algún punto intermedio porque tienen que ver el problema desde la perspectiva de los padres y del niño. La siguiente solución funciona SÓLO cuando el modo spinner =
dialog
independientemente de la versión de Android (no hay problema allí ... lo probé en VD y DesireS con Android => 2.2):. Configure el modo de su spinner (el padre) como:
android:spinnerMode="dialog"
Establezca las propiedades de la vista de texto (vista personalizada secundaria) en:
android:layout_weight="1" android:ellipsize="none" android:maxLines="100" android:scrollHorizontally="false"
Espero que esto también funcione para ti.
fuente
Al establecer
android:maxEms
un valor dado junto conandroid:layout_weight="1"
hará que TextView se ajuste una vez que alcance la longitud dada de ems.fuente
En Android Studio 2.2.3 bajo la
inputType
propiedad hay una propiedad llamadatextMultiLine
. La selección de esta opción solucionó un problema similar para mí. Espero que eso ayude.fuente
Estaba trabajando en un TextView dentro de un diseño dentro de un RecyclerView. Había texto queden cortadas, ex, para
Read this message
, vi:Read this
. Intenté configurarandroid:maxLines="2"
TextView, pero nada cambió. Sin embargo,android:lines="2"
resultó enRead this
primera línea ymessage
en segunda.fuente
Yo tuve el mismo problema. El siguiente cambio lo hizo funcionar:
android:layout_width="wrap_content"
Los puntos suspensivos, maxLines o layout_weight, no hicieron ninguna diferencia. Nota: el ancho principal también se establece como wrap_content.
fuente
Todo lo que tiene que hacer es establecer el ancho de su vista de texto .
android: layout_width = "60dp"
puede cambiar el ancho a su elección. Simplemente escriba una oración larga para verificar si funciona así
android: text = "quiero estar entre los ingenieros de software de clase mundial"
fuente
Prueba el enfoque de @ Guykun
android:layout_weight="1" android:ellipsize="none" android:maxLines="100" android:scrollHorizontally="false"
Además, asegúrese de que el ancho de los padres no esté configurado para ajustar el contenido. Esto es lo que me estaba perdiendo.
fuente
Estoy usando Android 2.2 y mi vista de texto irá automáticamente a la siguiente línea si excede la pantalla.
Si desea que el texto vaya a la siguiente línea antes del final de la pantalla, simplemente agregue (solo ingrese su propio valor de dp). Esto será útil si tiene una imagen a la derecha del texto.
android:layout_marginRight="52dp"
fuente
Lo suficientemente extraño: creé mi TextView en código y se envolvió, a pesar de que no configuré nada excepto cosas estándar, pero compruébelo usted mismo:
LinearLayout.LayoutParams childParams = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); childParams.setMargins(5, 5, 5, 5); Label label = new Label(this); label.setText("This is a testing label This is a testing label This is a testing label This is a testing labelThis is a testing label This is a testing label"); label.setLayoutParams(childParams);
Como puede ver en la definición de parámetros, estoy usando un LinearLayout. La clase Label simplemente extiende TextView, sin hacer nada allí excepto establecer el tamaño y el color de la fuente.
Al ejecutarlo en el emulador (API nivel 9), envuelve automáticamente el texto en 3 líneas.
fuente
LinearLayout.LayoutParams childParams = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
. Lo más probable es que lo hace la envoltura considera que son "automagic"Simplemente establezca
layout_with
un tamaño definido , cuando el texto llene el ancho máximo, se desbordará a la siguiente línea causando un efecto de ajuste.<TextView android:id="@+id/segmentText" android:layout_marginTop="10dp" android:layout_below="@+id/segmentHeader" android:text="You have the option to record in one go or segments(if you swap options you will loose your current recordings)" android:layout_width="300dp" android:layout_height="wrap_content"/>
fuente
El truco es con el ancho de textView, intente que sea un número dedicado como:
<TextView android:layout_width="300dp" android:layout_height="wrap_content"/>
He probado muchas soluciones sin ningún resultado, lo he intentado:
android:ellipsize="none" android:scrollHorizontally="false"
lo único que activó la opción de ajuste es el ancho dedicado
fuente
Necesita agregar su TextView en un ScrollView con algo como esto:
<ScrollView android:id="@+id/SCROLL_VIEW" android:layout_height="150px" android:layout_width="fill_parent"> <TextView android:id="@+id/TEXT_VIEW" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="This text view should act as header This text view should act as header This text view should act as header This text view should act as header This text view should act as header This text view should act as header This text view should act as header" /> </ScrollView>
fuente