studio example espaƱol ejemplo edittext xml android textview

xml - example - textview layout android



Ellipsize no funciona para textView dentro de listView personalizado (9)

Tengo un listView con objetos personalizados definidos por el diseño xml a continuación. Quiero que el textView con id "info" se elipsique en una sola línea, y he intentado usar los atributos

android:singleLine="true" android:ellipsize="end"

sin éxito.

Si configuro layout_width a un ancho fijo como por ejemplo

android:layout_width="100px"

El texto está bien truncado. Pero por razones de portabilidad, esta no es una solución aceptable.

¿Puedes ver el problema?

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingBottom="5px" > <TextView android:id="@+id/destination" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="22dp" android:paddingLeft="5px" /> <TextView android:id="@+id/date" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="15dp" android:paddingLeft="5px" /> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/info_table" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingLeft="5px" android:paddingTop="10px" > <TableRow> <TextView android:id="@+id/driver_label" android:gravity="right" android:paddingRight="5px" android:text="@string/driver_label" /> <TextView android:id="@+id/driver" /> </TableRow> <TableRow> <TextView android:id="@+id/passenger_label" android:gravity="right" android:paddingRight="5px" android:text="@string/passenger_label" /> <TextView android:id="@+id/passengers" /> </TableRow> <TableRow> <TextView android:id="@+id/info_label" android:gravity="right" android:paddingRight="5px" android:text="@string/info_label"/> <TextView android:id="@+id/info" android:layout_width="fill_parent" android:singleLine="true" android:ellipsize="end" /> </TableRow> </TableLayout>


Después de revisar estos 3 problemas (cerrados y reabiertos) y publicaciones anteriores, creo que la clave es cerrar TextView con un LinearLayout externo (o cualquier otro diseño que esté usando), y establecer el " layout_width " del ancho del diseño externo un poco MÁS PEQUEÑO que la longitud del texto contenido en el TextView. Parece que tiene que LIMITAR el ancho para que "android: ellipsize" se comporte correctamente.

Sigue la sugerencia de este problema ; después de agregar todos estos atributos para la piratería, también configuro el ancho de layout de LinearLayout externo en 240dp, por ejemplo:

<Linearlayout android:layout_width="240dp" android:layout_height="wrap_content" ...> <TextView .... android:singleLine="true" android:lines="1" android:maxLines="1" android:scrollHorizontally="true" android:ellipsize="end" android:text="this is a text which length should be longer than 240dp" /> </LinearLayout>

De lo que puedo hacer con éxito el final de TextView mostrando "...", ¡no es muy aceptable pero funciona! Y creo que funciona si se usa en TextView normal o en TextView en un adaptador de lista.

Aquí está mi captura de pantalla para el resultado!

Ref. De esos 3 temas:

número 882

número 10554

número 31229


Ellipsize está roto (vaya a votar en el informe de error , especialmente porque dicen que no es reproducible), así que tiene que usar un truco menor. Utilizar:

android:inputType="text" android:maxLines="1"

en cualquier cosa que quiera hacer elipsis. Además, no utilice singleLine , está en desuso.

ACTUALIZAR:

En una inspección más cercana, el problema que está teniendo es que su mesa se está extendiendo hacia el lado derecho de la pantalla. Cambiando su definición de TableLayout a:

<TableLayout android:id="@+id/info_table" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingLeft="5px" android:paddingTop="10px" android:shrinkColumns="1">

debería solucionar ese problema, luego haga lo que dije anteriormente para hacer elipsis de su TextView .


Encontré en algún lugar estos atributos.

<TextView ... android:singleLine="true" android:ellipsize="marquee" />

funciona bien para mi (Android 1.5)


Para mí estos atributos funcionaron. He probado en API 8 y en adelante

En XML

<TextView .... android:maxLines="1" android:scrollHorizontally="true" android:ellipsize="end" .... />

Programáticamente

setMaxLines(1); setEllipsize(TruncateAt.END); setHorizontallyScrolling(true);


Si coloca TextView dentro de un ViewGroup personalizado que creó, asegúrese de medirlo nuevamente si cambió la dimensión después de la medición.

Por ejemplo, calculé la nueva dimensión en onLayout. Antes de llamar a child.layout, llama

measureChild(child, View.MeasureSpec.makeMeasureSpec(childWidth, View.MeasureSpec.EXACTLY), View.MeasureSpec.makeMeasureSpec(childHeight, View.MeasureSpec.EXACTLY));



Tuve el mismo problema en la tarjeta de vista de reciclador. Resolví esto agregando el siguiente código:

<TextView android:ellipsize="end" android:maxLines="1"/>


Tuve los mismos resultados que Steve:

android: ellipsize = "marquee" android: scrollHorizontally = "true" android: lines = "1"

funciona perfectamente


tratar...

es decir

android:ellipsize="marquee" android:focusable="true" android:marqueeRepeatLimit="num|marquee_forever" android:lines="1" android:focusableInTouchMode="true" android:scrollHorizontally="true"

como la marquesina solo funciona cuando la vista está seleccionada o enfocada de acuerdo con el comentario # 2 en http://code.google.com/p/android/issues/detail?id=5364