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>