La vista de texto con texto largo elimina otras vistas en GridLayout a pesar de que ellipsize = end

Mi problema es muy similar aCómo obtener un diseño en el que un texto puede crecer y hacer una elipsis, pero no engullir los otros elementos en el diseño, pero sigue leyendo por qué no puedo usar TableLayouts como se propone allí.

Estoy tratando de crear una fila de vista de lista que básicamente se ve así:

| TextView | Ver 1 | Vista 2 |

Todas las vistas contienen elementos de ancho variable. El TextView tiene establecido ellipsize = "end". La vista 1 debe alinearse a la izquierda de TextView, mientras que la vista 2 debe alinearse a la derecha de la pantalla. Por lo tanto, normalmente, habrá espacios en blanco entre la Vista 1 y la Vista 2. A medida que el texto en el TextView se hace más largo, el TextView debería crecer, empujando la Vista 1 hacia la derecha hasta que no quede más espacio en blanco. Luego, ellipsize debería comenzar, cortando el texto en TextView y agregando una elipsis ("...") al final.

Por lo tanto, el resultado debería ser algo como esto:

+----------------------------------------+
| short text [view1]             [view2] |
+----------------------------------------+
| long text with ell ... [view1] [view2] |
+----------------------------------------+

He intentado:

TableLayouts, pero parecen hacer que el desplazamiento sea extremadamente lento en algunos dispositivos.RelativeLayouts, pero o bien tuve vistas superpuestas, o view1 o view2 desaparecieron completamente.GridLayouts, pero TextView siempre crece hasta que ocupa todo el ancho de la pantalla, por lo que elimina view1 y view2 fuera de la pantalla.

Este es el GridLayout que probé:

<GridLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <TextView
        android:layout_gravity="left|fill_horizontal"
        android:ellipsize="end"
        android:singleLine="true"
        android:text="Long text to demonstrate problem with TextView in GridLayout taking up too much space despite ellipsis" />

    <TextView
        android:layout_gravity="left"
        android:text="(view1)" />

    <TextView
        android:layout_gravity="right"
        android:text="(view2)" />
</GridLayout>

La vista 1 y la vista 2 no son realmente vistas de texto, simplemente las usé en el ejemplo para simplificar las cosas.

¿Hay alguna forma de lograr esto sin usar TableLayouts?

EDITAR: Según lo solicitado, aquí está mi intento de resolver esto con un RelativeLayout. El TextView ocupa todo el ancho de la pantalla en este caso, por lo que ni view1 ni view2 están visibles.

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/rl0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:ellipsize="end"
        android:singleLine="true"
        android:text="Long text to demonstrate problem with TextView in GridLayout taking up too much space despite ellipsis" />

    <TextView
        android:id="@+id/rl1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/rl0"
        android:layout_marginLeft="10dp"
        android:text="(view1)" />

    <TextView
        android:id="@+id/rl2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/rl1"
        android:layout_alignParentRight="true"
        android:layout_marginLeft="10dp"
        android:text="(view2)" />
</RelativeLayout>

Respuestas a la pregunta(14)

Su respuesta a la pregunta