2010-12-29 16 views
17

Sto utilizzando un TableLayout con TableRows come attività principale.Gestisci il layout all'interno di un radiogruppo con orientamento orizzontale

All'interno del TableLayout è un gruppo radio contenente 2 pulsanti di opzione all'interno dell'attività (il gruppo di radio si trova all'interno di una riga della tabella). Voglio essere in grado di allineare il pulsante di opzione più a destra allo schermo di bordo destro, quindi lo "spazio" è tra il pulsante di opzione sinistro e quello destro (invece che dopo il pulsante di opzione destro). Ad esempio

Quindi invece di avere
| (x) (x) gap |
Avrò
| (x) gap (x) |

dove (x) sono i pulsanti di opzione e | sono i bordi dello schermo

Posso usare gravità (center_horizontal) per mettere entrambi i pulsanti nel mezzo (cioè | gap (x) (x) gap |) tuttavia non riesco a essere in grado di dividerli il modo che voglio prima di

risposta

0

Hai mai trovato una soluzione a questo? La mia soluzione intermedia potrebbe essere d'aiuto, ma non è l'immagine completa per me. Sono stato in grado di farlo impostando larghezze specifiche, ma questo non consente la visualizzazione per ridimensionare per adattare la larghezza dello schermo:

<RelativeLayout 
    android:id="@+id/overall_layout" 
    android:layout_width="290dp" android:layout_height="wrap_content"> 

    <RadioGroup android:id="@+id/overall" 
     android:layout_width="fill_parent" android:layout_height="wrap_content" 
     android:orientation="horizontal"> 
     <RadioButton android:id="@+id/overall_1" android:tag="1" 
      android:button="@drawable/radio_1" 
      android:layout_width="50dp" 
      android:layout_marginRight="10dp" 
      android:layout_height="wrap_content"></RadioButton> 
     <RadioButton android:id="@+id/overall_2" android:tag="2" 
      android:button="@drawable/radio_2" 
      android:layout_width="50dp" 
      android:layout_marginRight="10dp" 
      android:layout_height="wrap_content"></RadioButton> 
     <RadioButton android:id="@+id/overall_3" android:tag="3" 
      android:button="@drawable/radio_3" 
      android:layout_width="50dp" 
      android:layout_marginRight="10dp" 
      android:layout_height="wrap_content"></RadioButton> 
     <RadioButton android:id="@+id/overall_4" android:tag="4" 
      android:button="@drawable/radio_4" 
      android:layout_width="50dp" 
      android:layout_marginRight="10dp" 
      android:layout_height="wrap_content"></RadioButton> 
     <RadioButton android:id="@+id/overall_5" android:tag="5" 
      android:button="@drawable/radio_5" 
      android:layout_width="50dp" 
      android:layout_height="wrap_content"></RadioButton> 
    </RadioGroup> 
    <TextView android:text="left" android:id="@+id/left" 
     android:layout_below="@id/overall" 
     android:layout_alignParentLeft="true" 
     android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> 
    <TextView android:text="right" android:id="@+id/right" 
     android:layout_below="@id/overall" 
     android:layout_alignParentRight="true" 
     android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> 
    </RelativeLayout> 

Nota non v'è alcun margine sull'ultimo pulsante.

Sto provando ad avere 5 pulsanti personalizzati in un gruppo radio, con la prima giustificata a sinistra e l'ultima giustificata a destra. I pulsanti hanno esattamente 50 pixel di larghezza e non voglio alcun testo associato ai pulsanti singolarmente. I 2 testi qui sotto sono destra e sinistra, semplicemente nel layout relativo. L'uso di "layout_gravity" non ha alcun effetto e "layout_weight" aggiunge padding alla destra di ciascun pulsante, il che fa sì che il pulsante più a destra non sia più giustificato.

Molto pelo su questo.

9

Trovato la mia soluzione. Una combinazione di pesi e gravità e rimozione dei margini. Il gruppo radio può avere layout_width = "fill_parent". Ogni pulsante di opzione dovrebbe avere layout_weight = "1", ma il layout_width per ciascun radiobutton deve ancora essere specificato per sovrascrivere il valore predefinito di "37" che suppongo sia la larghezza dell'immagine del pulsante di opzione predefinita.

 <RadioGroup android:id="@+id/overall" 
     android:layout_width="fill_parent" android:layout_height="80dp" 
     android:gravity="center" 
     android:orientation="horizontal"> 

primo pulsante dovrebbe avere:

   android:layout_weight="1" 
      android:layout_gravity="center|left" 

Ultima pulsante dovrebbe avere:

  android:layout_gravity="center|right" 

Nota: tutti i pulsanti hanno impostato layout_gravioty, ma l'impostazione non layout_weight per la maggior tasto destro!

+0

ho usato, ma doesnt lavoro per il mio codice, primo pulsante si estende su tutta la linea – elfekz

32

Tutto quello che devi in ​​modo uniforme lo spazio un numero arbitrario di pulsanti orizzontalmente sullo schermo:

  1. RadioGroup deve avere android:orientation="horizontal" & android:layout_width="fill_parent"
  2. Ogni pulsante deve avere android:layout_weight="1", tranne il pulsante più a destra (per rendere allineare sul bordo destro della schermata )!

Landscape screenshot

Questo mi ha portato ore per capire.

Ecco un esempio di codice, con un bonus di due etichette di testo e i bordi destro e sinistro dello schermo, per un'app di rilevamento.

<RadioGroup 
    android:id="@+id/radio_group" 
    android:orientation="horizontal" 
    android:layout_below="@id/question" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:visibility="gone" 
> 
    <RadioButton 
     android:id="@+id/strong_disagree_button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="1" 
    /> 
    <RadioButton 
     android:id="@+id/disagree_button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="@string/disagree" 
    /> 
    <RadioButton 
     android:id="@+id/neutral_button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="@string/neutral" 
    /> 
    <RadioButton 
     android:id="@+id/agree_button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="@string/agree" 
    /> 
    <RadioButton 
     android:id="@+id/strong_agree_button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="5" 
    /> 
</RadioGroup> 
<TextView 
    android:id="@+id/disagree_label" 
    android:text="@string/strongly_disagree_txt" 
    android:layout_below="@id/radio_group" 
    style="@style/TextAppearance" 
    android:visibility="gone" 
    /> 
<TextView 
    android:id="@+id/agree_label" 
    android:text="@string/strongly_agree_txt" 
    android:layout_below="@id/radio_group" 
    android:layout_alignParentRight="true" 
    style="@style/TextAppearance" 
    android:layout_width="wrap_content" 
    android:visibility="gone" 
    /> 
+1

Ho provato questo e non è lo stesso con lo screenshot che hai allegato. – KarenAnne

+1

Grazie per questo .. :) – KarenAnne

+1

Grazie mille per questo, mi sono tirato fuori i capelli! – Garbit

0

se ho ben capito si domanda giusta, si può anche provare codice successivo all'interno RadioGroup:

<ToggleButton 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

<View 
    android:id="@+id/view1" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" /> 

<ToggleButton 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" />