Textview с длинным текстом выталкивает другие представления в GridLayout, несмотря на то, что ellipsize = end

Моя проблема очень похожа наКак получить макет, в котором один текст может увеличиваться и увеличиваться в размерах, но не поглощать другие элементы макета, но читайте ниже, почему я не могу использовать TableLayouts, как там предлагается.

Я пытаюсь создать строку списка, которая в основном выглядит следующим образом:

| TextView | Вид 1 | Вид 2 |

Все виды содержат элементы переменной ширины. В TextView установлено значение ellipsize = "end". Вид 1 должен быть выровнен слева от TextView, а вид 2 должен быть выровнен справа от экрана. Поэтому, как правило, между Видом 1 и Видом 2 будут пробелы. По мере увеличения размера текста в TextView TextView должен увеличиваться, толкая Вид 1 вправо, пока не останется больше свободного места. Затем следует ввести многоточие, вырезать текст в TextView и добавить многоточие ("...") в конце.

Итак, результат должен выглядеть примерно так:

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

Я пробовал:

TableLayouts, но они, кажется, делают прокрутку чрезвычайно медленной на некоторых устройствах.RelativeLayouts, но у меня либо были перекрывающиеся представления, либо view1 или view2 полностью исчезли.GridLayouts, но TextView всегда растет до тех пор, пока не займет всю ширину экрана, выталкивая таким образом view1 и view2 из экрана.

Это GridLayout, который я пробовал:

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

View 1 и View 2 на самом деле не TextViews, я просто использовал их в примере, чтобы упростить вещи.

Есть ли способ достичь этого без использования TableLayouts?

РЕДАКТИРОВАТЬ: Как и просили, вот моя попытка решить эту проблему с помощью RelativeLayout. В этом случае TextView занимает всю ширину экрана, поэтому ни view1, ни view2 не видны.

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

Ответы на вопрос(1)

Ваш ответ на вопрос