Cadeias de restrição e reticências de texto + Imagem à direita
Se você estiver usandoConstraintLayout 1.1.0
, a propriedade correta a ser usada éapp:layout_constrainedWidth="true"
no lugar do velhoapp:layout_constraintWidth_default="wrap"
(e a contrapartida da altura). Veja a resposta atualizada.
Se você estiver usandoConstraintLayout 1.0.0
estável (ou acima) (1.0.2 no momento), consulte a resposta atualizada para obter uma solução mais simples sem a necessidade de aninhar layouts.
UsandoConstraintLayouts-Beta3
lançado em 3 de novembro de 2016. (fonte)
Estou tentando fazer o seguinte:
| | |<-[TextView]<->[ImageView] -----------> | | |
O que consegui com um layout assim:
<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"/>
Parece bom, mas quando o texto é maior que o espaço disponível…
| | |<-[TextView Larger Than The Space Avail]| | |
A exibição de texto possui um estilo que especifica estes:
<item name="android:lines">1</item>
<item name="android:maxLines">1</item>
<item name="android:ellipsize">end</item>
Entãodevemos trabalho, mas não tenho certeza de quais restrições preciso para que a imagem deslize até a direita e, em seguida,Pare lá e deixe a visualização de texto entender que não há mais espaço.
o que estou perdendo?
Nota: Se eu definir a largura do texto para 0dp, ele funcionará, mas a imagem estará sempre à direita (o viés horizontal parece ser ignorado)
Nota 2:Eu tentei isso com beta2, bem, de fato, parece que Beta3 tem umbug no editor visual.
ATUALIZAR: Tentei replicar isso no Xcode / AutoLayout:
É assim que parece com um Texto Curto
Agora, o mesmo layout, basta digitar um texto longo na exibição de texto…
Como você pode ver, a restrição de trilha (direita) para a visualização da imagem diz: você está8 ou mais pontos da margem direita.
Também está afixado à esquerda no rótulo (textView).
Pelo que acabei de aprender no Twitter, estepode não ser possível no ConstraintLayout do Android no momento:Fonte