android textview tablelayout multiline

Multiline TextView en Android?



tablelayout (15)

¿Por qué no declaras una cadena en lugar de escribir líneas largas en el archivo de diseño? Para esto, debe declarar una línea de código en el archivo de diseño ''android: text = "@ string / text"'' y vaya a // app / src / main / res / values ​​/ strings.xml y agregue una línea de código ''Su texto de líneas múltiples aquí'' También use ''/ n'' para dividir la línea desde cualquier punto, la línea se ajustará automáticamente.

Me gustó más abajo en xml

<TableRow> <TextView android:id="@+id/address1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="left" android:maxLines="4" android:singleLine="false" android:text="Johar Mor, Gulistan-e-Johar, Karachi" > </TextView> </TableRow>

No funciona para multiline , y estoy usando TableLayout ...

Entonces, ¿qué es un error que estoy haciendo aquí?


Intente trabajar con EditText haciendo que no se pueda hacer clic y no se pueda enfocar, también puede mostrar una barra de desplazamiento y eliminar la barra inferior de EditText.
Aquí hay un ejemplo:

<EditText android:id="@+id/my_edit_text" android:layout_width="match_parent" android:layout_height="wrap_parent" android:inputType="textMultiLine" <!-- multiline --> android:clickable="false" <!-- unclickable --> android:focusable="false" <!-- unfocusable --> android:scrollbars="vertical" <!-- enable scrolling vertically --> android:background="@android:color/transparent" <!-- hide the underbar of EditText --> />

Espero que esto ayude :)


La mejor respuesta que encontré para TextView multilínea es:

android:inputType="textMultiLine"


Lo que aprendí fue agregar "/ n" entre las palabras donde quieres que frenar en la siguiente línea. Por ejemplo...

<TextView android:id="@+id/time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAlignment="center" android:text="M-F 9am-5pm /n By Appointment Only" />

El / n entre las 5 p.m. y By me permitió tener más control sobre dónde quería que mi siguiente línea comenzara y terminara.


No me gusta la solución que fuerza el número de líneas en la vista de texto. Más bien sugiero que lo resuelva a través de la solución propuesta aquí . Como veo, OP también está luchando para hacer que la vista de texto se vea como corresponde en la tabla y shrinkColumns es la directiva correcta para lograr lo que se quiere.


No me gusta ninguna de las respuestas. Simplemente configure el inputType y TextView se adaptará a su contenido

<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="textMultiLine"/>

Probado en un Nexus One (2.3) y Nexus 4 (4.4)


Primero reemplace "/n" con su Html equivalente "&lt;br&gt;" luego llama a Html.fromHtml() en la cadena. Siga los pasos a continuación:

String text= model.getMessageBody().toString().replace("/n", "&lt;br&gt;") textView.setText(Html.fromHtml(Html.fromHtml(text).toString()))

Esto funciona perfectamente


Si el texto que está colocando en TextView es corto, no se expandirá automáticamente a cuatro líneas. Si desea que TextView tenga siempre cuatro líneas independientemente de la longitud del texto, configure el atributo android:lines :

<TextView android:id="@+id/address1" android:gravity="left" android:layout_height="fill_parent" android:layout_width="wrap_content" android:maxLines="4" android:lines="4" android:text="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."></TextView>

Puede hacer esto con TableRow, vea el código a continuación

<TableRow > <TextView android:id="@+id/tv_description_heading" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="left" android:padding="8dp" android:text="@string/rating_review" android:textColor="@color/black" android:textStyle="bold" /> <TextView android:id="@+id/tv_description" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="left" android:maxLines="4"`enter code here` android:padding="8dp" android:text="The food test was very good." android:textColor="@color/black" android:textColorHint="@color/hint_text_color" /> </TableRow>


Simplemente ponga ''/ n'' dentro de su texto ... no se requiere ningún atributo adicional :)

<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="Pigeon/nControl/nServices" android:id="@+id/textView5" android:layout_gravity="center" android:paddingLeft="12dp"/>


Solía:

TableLayout tablelayout = (TableLayout) view.findViewById(R.id.table); tablelayout.setColumnShrinkable(1,true);

funcionó para mí. 1 es el número de columna.


Solo agregue textview en ScrollView

<ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:layout_marginLeft="15dp" android:layout_marginRight="15dp" android:layout_marginTop="20dp" android:fillViewport="true"> <TextView android:id="@+id/txtquestion" android:layout_width="fill_parent" android:layout_height="match_parent" android:background="@drawable/abs__dialog_full_holo_light" android:lines="20" android:scrollHorizontally="false" android:scrollbars="vertical" android:textSize="15sp" /> </ScrollView>


TextView será multilínea cuando no tenga espacio suficiente para caber en la línea individual y singLine no configurado en verdadero.

Si obtiene el espacio en una línea, no será multilínea.


Traté de comentar sobre una de las respuestas anteriores, pero no tengo suficiente reputación.
Solo pensé en agregar que si usas:

android:inputType="textMultiLine"

Luego, la vista deja de poder hacer clic. Estaba tratando de obtener vistas de texto multilínea en el menú de mi bandeja deslizante, que obviamente necesita responder a los clics.

El android:singleLine="false" funcionó bien, sin embargo.


para mí, ninguna de las soluciones no funcionó. Sé que no es una respuesta completa para esta pregunta, pero a veces puede ser útil.

Puse 4 textviews en una linearlayout vertical.

<Linearlayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation:"vertical" ...> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text:"line1" .../> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text:"line2" .../> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text:"line3" .../> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text:"line4" .../> </LinearLayout>

Esta solución es buena para los casos en que el texto de la vista de texto es constante, como las etiquetas.


You can do this with TableRow, see below code <TableRow > <TextView android:id="@+id/tv_description_heading" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="left" android:padding="8dp" android:text="@string/rating_review" android:textColor="@color/black" android:textStyle="bold" /> <TextView android:id="@+id/tv_description" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="left" android:maxLines="4"`enter code here` android:padding="8dp" android:text="The food test was very good." android:textColor="@color/black" android:textColorHint="@color/hint_text_color" /> </TableRow>