2012-07-16 7 views
5

¿Cómo puedo lograr el siguiente diseño, con TextView siendo TextView con elipsis y Vista siendo wrap_content e inmediatamente a la derecha de TextView?Android - Elipsis con vista alineada a la derecha

Aquí hay tres ejemplos de cómo el diseño debe comportarse, con diferente anchura TextView:

|[TextView] [View]    | 

|[TextView TextView] [View]  | 

|[TextView TextView T...] [View]| 

[Editar]

La siguiente TableLayout da el comportamiento correcto:

<TableLayout 
    android:id="@+id/upper_layout" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_toLeftOf="@+id/alert_button" 
    android:shrinkColumns="0" 
    android:stretchColumns="2" > 

    <TableRow> 

     <TextView 
      android:id="@+id/name_textview" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_vertical" 
      android:ellipsize="end" 
      android:includeFontPadding="false" 
      android:lines="1" 
      android:paddingTop="2dp" 
      android:scrollHorizontally="true" /> 

     <TextView 
      android:id="@+id/unread_count_textview" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="10dp" 
      android:gravity="center" 
      android:includeFontPadding="false" 
      android:paddingBottom="0dp" 
      android:paddingLeft="5dp" 
      android:paddingRight="5dp" 
      android:paddingTop="2dp" /> 
    </TableRow> 
</TableLayout> 

Los TableLayout utiliza 3 columnas, siendo la última el truco: la propiedad strechColumns hace que ocupe todo el espacio disponible, por lo que el segundo TextView siempre está inmediatamente a la derecha del primero. La primera elipse TextView correctamente debido a la propiedad shrinkColumns.

Sin embargo, no me gusta la idea de usar un TableLayout para lograr eso. ¿Alguien sabe una mejor manera?

Gracias

+0

¿Es esta una lista o no? – Yury

+0

Sí, es un diseño de fila. – gdelente

Respuesta

0

Prueba esto (que no puedo comprobar ahora, pero a mi punto de vista debería funcionar):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:padding="6dip" > 

    <TextView 
     android:id="@+id/my_txtvw_txtvw" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:ellipsize="marquee" 
     android:maxLines="1" /> 

    <TextView 
     android:id="@+id/my_view" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@id/my_txtvw_txtvw" 
     android:maxLines="1" /> 

</RelativeLayout> 
+0

Gracias, pero desafortunadamente con esta solución, el TextView correcto se saca de la pantalla cuando el TextView izquierdo es demasiado largo. – gdelente

0

Prueba esto:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 

    <TextView 
     android:id="@+id/text1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_toLeftOf="@+id/my_view" 
     android:ellipsize="end" 
     android:maxLines="1" 
     android:layout_alignParentLeft="true" 
     android:text="blablabla blablabla" 
     android:layout_centerVertical="true" 
     android:gravity="center_vertical|left" /> 

    <TextView 
     android:id="@+id/my_view" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:maxLines="1" /> 

</RelativeLayout> 

No estoy seguro si desea android:ellipsize="end" o android:ellipsize="marquee". Creo que el diseño funcionará bien para ti, simplemente reemplaza el valor de elipsis que se necesita.

Deseo saber su progreso ...

+0

Gracias yugidroid por su respuesta. Usted pone 'alignParentRight =" true "' en la segunda vista. El problema es que la vista siempre estará alineada a la extrema derecha. Quiero que "my_view" esté justo a la derecha de "text1". Una vez que el primer TextView ("texto1") es demasiado largo para caber dentro del elemento primario, "mi_vista" está alineado a la derecha y "texto1" está elipsado. Quitar 'alignParentRight =" true "' no fue de ayuda porque my_view sacó "text1" de la pantalla hacia la izquierda. – gdelente

Cuestiones relacionadas