A visualização de texto com texto longo exclui outras exibições no GridLayout, apesar de elipses = final

Meu problema é muito parecido comComo obter um layout onde um texto pode crescer e reticir, mas não devorar os outros elementos no layout, mas leia abaixo porque eu não posso usar TableLayouts como proposto lá.

Eu estou tentando criar uma linha listview que basicamente se parece com isso:

| TextView | Ver 1 | Ver 2 |

Todas as visualizações contêm elementos de largura variável. O TextView possui um conjunto de ellipsize = "end". A vista 1 deve alinhar à esquerda do TextView, enquanto a vista 2 deve alinhar à direita da tela. Portanto, normalmente, haveria espaços em branco entre a Visualização 1 e a Visão 2. À medida que o texto na TextView aumenta, o TextView deve crescer, pressionando a Visualização 1 para a direita até que não haja mais espaço em branco. Em seguida, retire o efeito de reticências, cortando o texto em TextView e anexando reticências ("...") no final.

Então, o resultado deve ser algo como isto:

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

Eu tentei:

TableLayouts, mas eles parecem tornar a rolagem extremamente lenta em alguns dispositivos.RelativeLayouts, mas eu tinha visualizações sobrepostas ou o view1 ou o view2 desapareceram completamente.GridLayouts, mas o TextView sempre cresce até ocupar toda a largura da tela, empurrando view1 e view2 para fora da tela.

Este é o GridLayout que eu tentei:

<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>

A vista 1 e a vista 2 não são realmente TextViews, apenas as usei no exemplo para simplificar as coisas.

Existe alguma maneira de conseguir isso sem usar o TableLayouts?

EDITAR: Conforme solicitado, aqui está minha tentativa de resolver isso com um RelativeLayout. O TextView ocupa toda a largura da tela, portanto, nem view1 nem view2 estão visíveis.

<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>

questionAnswers(14)

yourAnswerToTheQuestion