2014-07-02 9 views
5

Ho un LinearLayout orizzontale con 2 elementi: uno TextView e uno RatingBar. Voglio che lo RatingBar sia sempre direttamente a destra dello TextView. Ma voglio che lo TextView allunghi quanto necessario fino a quando non c'è più spazio, quindi voglio aggiungere delle linee.TextView distende e spinge un'altra vista offscreen in orizzontale LinearLayout

Qui è una rappresentazione visiva di come dovrebbe apparire, mostrando diverse larghezze di testo:

| TextView - RatingView ------------- | 

| TextViewTextView - RatingView ----- | 

| TextViewTextViewTextVi - RatingView | 
| ewTextViewTextView     | 

Tuttavia, il RatingBar continua a sempre spinto fuori dallo schermo, come i tratti TextView. Questo è ciò che fa invece:

| TextView - RatingView ------------- | 

| TextViewTextView - RatingView ----- | 

| TextViewTextViewTextViewTextViewTex | 
| tView        | 

Ecco il XML:

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="TextViewTextViewTextViewTextViewTextViewTextViewTextView" 
     android:id="@+id/titleTextView" 
     android:textSize="15sp" 
     android:textColor="@color/blue" 
     android:layout_gravity="center_vertical" 
     android:layout_marginRight="8dp" 
     android:layout_weight="1"/> 

    <RatingBar 
     android:layout_width="106dp" 
     android:layout_height="20dp" 
     android:id="@+id/ratingBar2" 
     android:numStars="5" 
     android:rating="0" 
     style="@style/customRatingBar" 
     android:layout_gravity="center_vertical" 
     android:isIndicator="true" /> 

</LinearLayout> 

Ho provato ad aggiungere layout_weight per visualizzare o entrambi. Non riesco a trovare niente da lavorare. Dovrei usare un RelativeLayout? Nemmeno io riuscivo a farlo funzionare.

risposta

1

Questo è un compito sorprendentemente difficile! Come suggerisce @zimeriljazia, fare lo stick RatingBar a destra e avere l'involucro TextView a sinistra è facile con uno RelativeLayout, per il TextView solo alignParentRight e per RatingBar utilizzare layout_toRightOf="@id/ratingbar".

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 

    <RatingBar 
     android:id="@+id/ratingBar1" 
     style="?android:attr/ratingBarStyleSmall" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true"   
     android:numStars="5" 
     android:rating="5" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_toLeftOf="@id/ratingBar1" 
     android:text="@string/long" /> 

</RelativeLayout> 

Se stai usando solo il RatingBar per la visualizzazione (non per l'ingresso) allora si potrebbe utilizzare TextView.setCompoundDrawables() o uno dei suoi cugini. Invia null per tutti tranne quello giusto, e per questo imposta l'immagine di valutazione a livello di codice. Dovrai specificare layout_width come wrap_content.

+0

Grazie per la risposta dettagliata. Ho finito per andare con RelativeLayout e avere la barra di valutazione bloccato. Non è quello che mostra il design, ma questo è il meglio che potrei fare. Se avrò più tempo, potrei provare il tuo secondo suggerimento. Grazie! – jproffitt

+0

Buono a sapersi! Se senti che ho risposto alla tua domanda, vai avanti e segna la mia risposta come risposta. :) –

0

Prova ad aggiungere 2 layout relativi uno per la visualizzazione testo e uno per la barra di valutazione. Allinea il layout della barra di valutazione a destra dello schermo quindi rendi il layout di textview android: layout_toLeftOf rating bar

+0

Questa è una buona idea, ma il 'RatingBar' sarebbe bloccato sulla destra dello schermo. Voglio che sia bloccato alla fine del 'TextView'. (Fino a che il 'TextView' si estende troppo) – jproffitt

Problemi correlati