Я выкладываю на экран 3 вида по горизонтали (изображение фиксированного размера и 2 однострочных текстовых вида: leftTextView
и rightTextView
) и пытаюсь заставить rightTextView
обнять leftTextView
, но в случае, если ширина обеих меток превысит размер экрана, обрежьте leftTextiew
.
Пример желаемой функциональности:
|img|leftText|rightText| ||(end of screen)
|img|leftTextMedium|rightText| ||
|img|leftTextTooLongSoTrunc...|rightText||
Что происходит на самом деле:
|img|leftText|rightText| ||(end of screen)
|img|leftTextPrettyLongButNotHuge|rightT||
|img|leftTextWhichIsIncrediblyLongBlahBl||
В настоящее время, если размер обоих текстовых представлений превышает ширину представления, rightTextView
в конечном итоге сжимается, чтобы освободить место, даже несмотря на то, что я установил android:ellipsize="end"
на leftTextView
.
Есть ли способ заставить leftTextView
иметь «приоритет усечения», который говорит, что он должен усекаться, если это приведет к тому, что другие представления не будут соответствовать? Или, с другой стороны, могу ли я настроить rightTextView
на «сопротивление сжатию», чтобы он не сжимался, чтобы освободить место для leftTextView
? Вот пример моего XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/fixedWidthImage"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<TextView
android:id="@+id/leftTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@+id/fixedWidthImage"
android:layout_toRightOf="@id/fixedWidthImage"
android:maxLines="1"
android:textSize="18sp"
android:ellipsize="end" />
<TextView
android:id="@+id/rightTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@+id/leftTextView"
android:layout_toRightOf="@+id/leftTextView"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:maxLines="1"
android:textSize="12sp" />
</RelativeLayout>
Что я пробовал:
- В
leftTextView
добавьтеtoStartOf
/toLeftOf
rightTextView
(вылетает приложение) Вместо того, чтобы выравнивать
rightTextView
по концу/справа отleftTextView
, переверните его и выровняйтеleftTextView
по началу/слева отrightTextView
. Это приводит к тому, чтоrightTextView
привязывается к концу экрана, а не прямо справа отleftTextView
. Пример того, как это выглядит:|img|leftText |rightText|| |img|leftTextMedium |rightText|| |img|leftTextTooLongSoTrunc...|rightText||
Даже если я установлю
android:minWidth="25dp"
только для того, чтобы обеспечить видимость хотя бы частиrightTextView
(чего я не хочу делать, потому что длина этого текста является переменной), это все равно приведет к сжатию ширины, чтобы освободить место дляleftTextView
.- Согласно ответу Эмануэля Моклина, я попытался обернуть
LinearLayout
и установить вес наleftTextView
. Результат был визуально идентичен тому, что я пробовал в № 2.