5

Ho un relativelayout, e in esso due testuali. Textview 1 è allineato in alto e lasciato con genitore. Textview 2 è allineato a destra di textview 1 e a destra con genitore. Questo crea un problema se il testo in 1 è troppo lungo, il che significa che 1 spingerà 2 fuori dallo schermo nel peggiore dei casi.TextView e Ellipse quando spremuto da altro TextView

Come ottengo questi due per "sacrificare" dal testo n. 1 invece di 2? la larghezza minima non sembra funzionare. Il mio obiettivo finale è quello di ellisse il testo 1, ma sembra che la dimensione del testo sia corretta in primo luogo.

Ecco l'xml

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout android:id="@+id/RelativeLayout01" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       xmlns:android="http://schemas.android.com/apk/res/android"> 
<TextView android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/TextView02" 
      android:layout_alignParentRight="true" 
      android:layout_toRightOf="@+id/TextView01" 
      android:text="I am number 2" 
      android:gravity="right" 
      android:lines="1" 
      android:minWidth="32sp"> 
</TextView> 
<TextView android:layout_height="wrap_content" 
      android:layout_alignParentTop="true" 
      android:id="@+id/TextView01" 
      android:layout_alignParentLeft="true" 
      android:textSize="22sp" 
      android:layout_width="wrap_content" 
      android:lines="1" 
      android:text="sd sd asd sad asd asd saasd a"> 
</TextView> 

</RelativeLayout> 
+3

In realtà, questa domanda risponde perfettamente: http://stackoverflow.com/questions/3785221/two-textviews-side-by-side-only-one-ellipsize – sandos

risposta

0

Si può facilmente fare questo con un LinearLayout orizzontale mediante l'attributo di peso. Il seguente codice funzionerà per te. Ho impostato anche gli id ​​per le tue visualizzazioni, quindi copia direttamente incolla questo e funzionerà nel tuo codice.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:orientation="horizontal" 
    > 
    <TextView 
     android:id="@+id/TextView01" 
     android:layout_height="wrap_content" 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:ellipsize="end" 
     android:maxLines="1" 
     android:text="Some Long and Random Text Some Long and Random Text" 
     /> 
    <TextView 
     android:id="@+id/TextView02" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:layout_weight="0" 
     android:layout_gravity="right"  
     android:text="I am number 2" 
    /> 
</LinearLayout> 
+1

Ho un problema con questa soluzione nel mio progetto, il primo testo è ellissato come dovrebbe essere, ma lascia uno spazio vuoto alla fine, perché accorcia le parole intere (e l'ultimo è abbastanza "lungo"), quindi il secondo testo è più lontano di quanto dovrebbe essere . Qualsiasi soluzione a questo – Squeazer

0

get idea dalla mia TextView e basta usare il tuo TextView come questo, la speranza è un lavoro:

    <TextView 
        android:id="@+id/tv_songtitle" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginLeft="5dp" 
        android:text="Song Title" 
        android:singleLine="true" 
        android:ellipsize="end" 
        android:textSize="13dp" 
        android:textStyle="bold" /> 
0

Uso attributo android:shrinkColumns="0" di TableLayout.