Prioridade de truncamento do Android TextView ou resistência à compressão [duplicado]
Esta pergunta já tem uma resposta aqui:
Expanda o TextView com wrap_content até que a visualização vizinha chegue ao final do pai 6 respostasEstou exibindo três visualizações horizontalmente na tela (imagem de tamanho fixo e duas visualizações de texto de linha única:leftTextView
erightTextView
) e estou tentando obter orightTextView
abraçar contra oleftTextView
, mas, se a largura de ambos os rótulos exceder o tamanho da tela, trunque oleftTextiew
.
Exemplo de funcionalidade desejada:
|img|leftText|rightText| ||(end of screen)
|img|leftTextMedium|rightText| ||
|img|leftTextTooLongSoTrunc...|rightText||
O que realmente está acontecendo:
|img|leftText|rightText| ||(end of screen)
|img|leftTextPrettyLongButNotHuge|rightT||
|img|leftTextWhichIsIncrediblyLongBlahBl||
Atualmente, se o tamanho de ambas as visualizações de texto exceder a largura da visualização, orightTextView
acaba sendo esmagado para abrir espaço, mesmo que eu tenha definidoandroid:ellipsize="end"
noleftTextView
.
Existe uma maneira de fazer oleftTextView
tem uma "prioridade de truncamento" que diz que deveria truncar se isso faria com que outros modos de exibição não se ajustassem? Ou, por outro lado, posso definir orightTextView
ter uma "resistência à compressão", a fim de impedir que ela seja esmagada para abrir espaço para oleftTextView
? Aqui está uma amostra do meu 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>
Coisas que tentei:
NoleftTextView
adicione umtoStartOf
/ toLeftOf
arightTextView
(trava o aplicativo)Em vez de alinhar orightTextView
até o final / direito doleftTextView
, vire-o e alinhe oleftTextView
para o início / esquerda dorightTextView
. Isso resulta norightTextView
ancorado no final da tela, em vez de diretamente à direita doleftTextView
. Exemplo de como isso acaba procurando:
|img|leftText |rightText||
|img|leftTextMedium |rightText||
|img|leftTextTooLongSoTrunc...|rightText||
Mesmo se eu definirandroid:minWidth="25dp"
apenas para garantir pelo menosparte dorightTextView
é visível (o que eu não quero fazer porque esse tamanho do texto é variável) ele ainda acaba comprimindo a largura para dar espaço para oleftTextView
.
LinearLayout
e ajustando o peso noleftTextView
. O resultado foi visualmente idêntico ao que eu tentei no # 2.