Prioridad de truncamiento de TextView de Android o resistencia de compresión [duplicado]
Esta pregunta ya tiene una respuesta aquí:
Expanda TextView con wrap_content hasta que la vista vecina llegue al final del padre 6 respuestasEstoy presentando 3 vistas horizontalmente en la pantalla (imagen de tamaño fijo y 2 vistas de texto de una sola línea:leftTextView
yrightTextView
) y estoy tratando de obtener elrightTextView
abrazarse contra elleftTextView
, pero en el caso de que el ancho de ambas etiquetas exceda el tamaño de la pantalla, trunca elleftTextiew
.
Ejemplo de funcionalidad deseada:
|img|leftText|rightText| ||(end of screen)
|img|leftTextMedium|rightText| ||
|img|leftTextTooLongSoTrunc...|rightText||
¿Qué está pasando realmente?
|img|leftText|rightText| ||(end of screen)
|img|leftTextPrettyLongButNotHuge|rightT||
|img|leftTextWhichIsIncrediblyLongBlahBl||
Actualmente, si el tamaño de ambas vistas de texto excede el ancho de la vista, elrightTextView
termina siendo aplastado para hacer espacio, a pesar de que he establecidoandroid:ellipsize="end"
sobre elleftTextView
.
¿Hay alguna manera de hacer elleftTextView
tiene una "prioridad de truncamiento" que dice que debería truncarse si ocasiona que otras vistas no encajen? O, por otro lado, ¿puedo configurar elrightTextView
tener una "resistencia a la compresión" para evitar que se aplaste y dejar espacio para elleftTextView
? Aquí hay una muestra de mi 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>
Cosas que he probado:
En elleftTextView
, Agrega untoStartOf
/ toLeftOf
elrightTextView
(bloquea la aplicación)En lugar de alinear elrightTextView
al final / derecho de laleftTextView
, voltéalo y alinea elleftTextView
al inicio / izquierda de larightTextView
. Esto resulta en elrightTextView
estar anclado al final de la pantalla en lugar de directamente a la derecha delleftTextView
. Ejemplo de cómo se ve esto:
|img|leftText |rightText||
|img|leftTextMedium |rightText||
|img|leftTextTooLongSoTrunc...|rightText||
Incluso si configuroandroid:minWidth="25dp"
solo para asegurar al menosparte delrightTextView
es visible (lo que no quiero hacer porque la longitud de este texto es variable) todavía termina comprimiendo el ancho para dejar espacio para elleftTextView
.
LinearLayout
y establecer el peso en elleftTextView
. El resultado fue visualmente idéntico al que probé en el n. ° 2.