ConstraintLayout Chains и многоточие текста + изображение справа
Если вы используетеConstraintLayout 1.1.0
правильное свойство для использованияapp:layout_constrainedWidth="true"
на месте старогоapp:layout_constraintWidth_default="wrap"
(и высота аналога). Смотрите обновленный ответ.
Если вы используетеConstraintLayout 1.0.0
стабильный (или выше) (в настоящее время 1.0.2), см. обновленный Ответ для более простого решения без необходимости вложения макетов.
С помощьюConstraintLayouts-Beta3
выпущен 3 ноября 2016 года. (источник)
Я пытаюсь сделать следующее:
| | |<-[TextView]<->[ImageView] -----------> | | |
Что я достиг с макетом, например, так:
<TextView
android:id="@+id/textView"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintRight_toLeftOf="@+id/caret"
app:layout_constraintHorizontal_bias="0.0"
android:text="Some Text"
android:textAlignment="viewStart"
android:gravity="start" />
<ImageView
android:id="@+id/caret"
android:layout_width="wrap_content"
android:layout_height="8dp"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintLeft_toRightOf="@+id/textView"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@+id/textView"
app:layout_constraintBottom_toBottomOf="@+id/textView"
app:layout_constraintHorizontal_bias="0.0"
android:contentDescription=""
app:srcCompat="@drawable/ic_selection"
android:layout_marginStart="8dp"/>
Это выглядит нормально, но когда текст длиннее доступного пространства ...
| | |<-[TextView Larger Than The Space Avail]| | |
Текстовое представление имеет стиль, который определяет это:
<item name="android:lines">1</item>
<item name="android:maxLines">1</item>
<item name="android:ellipsize">end</item>
Так чтодолжен работать, но я не уверен, какие ограничения мне нужно, чтобы изображение скользило до правого, а затемстоп там и пусть текстовое представление поймет, что больше нет места.
Что мне не хватает?
Примечание: если я установлю ширину textview равной 0dp, это сработает, но тогда изображение всегда будет справа (горизонтальное смещение, по-видимому, игнорируется)
Заметка 2:Я пробовал это с бета2, на самом деле, похоже, что бета-версия имеетошибка в визуальном редакторе.
ОБНОВИТЬЯ пытался повторить это в Xcode / AutoLayout:
Вот как это выглядит с коротким текстом
Теперь та же схема, я просто набираю длинный текст в текстовом представлении…
Как видите, ограничение следа (справа) для представления изображения говорит: вы8 или больше указывает с правого поля.
Он также прикреплен слева к метке (textView).
Из того, что я только что узнал из Twitter, этоможет быть невозможным на Android ConstraintLayout на данный момент:Источник