2013-03-15 16 views
16

Ho tre pulsanti radio e voglio sistemarli uniformemente sullo schermo. Quando uso android:layout_weight="1", i pulsanti sono allungati sullo schermo. Quindi, come avrei la stessa quantità di spazio tra ognuno di essi che si adatta anche a schermi di dimensioni diverse?Come distribuire uniformemente i pulsanti di opzione su Android?

<RadioGroup 
     android:id="@+id/auton_bar" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:paddingLeft="10dp" 
     android:layout_below="@id/clear_fields" 
       > 
     <RadioButton 
      android:id="@+id/auton_radio_1" 
      android:layout_height="wrap_content" 
      android:layout_width="wrap_content" 
      android:background="@drawable/auton_col" 
      android:layout_weight="1" 

      /> 
     <!-- android:layout_marginRight="380dp" --> 
     <RadioButton 
      android:id="@+id/auton_radio_2" 
      android:layout_height="wrap_content" 
      android:layout_width="wrap_content" 
      android:background="@drawable/auton_col" 
      android:layout_weight="1" 


      /> 
     <RadioButton 
      android:id="@+id/auton_radio_3" 
      android:layout_height="wrap_content" 
      android:layout_width="wrap_content" 
      android:background="@drawable/auton_col" 
      android:layout_weight="1" 
      /> 

    </RadioGroup> 

risposta

30

Se si desidera loro di condividere la larghezza dello schermo altrettanto è necessario impostare android:layout_width="match_parent" su ogni View. Il tuo xml diventerebbe:

<RadioGroup 
    android:id="@+id/auton_bar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/clear_fields" 
    android:orientation="horizontal" 
    android:paddingLeft="10dp" > 

    <RadioButton 
     android:id="@+id/auton_radio_1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:background="@drawable/auton_col" /> 
    <!-- android:layout_marginRight="380dp" --> 

    <RadioButton 
     android:id="@+id/auton_radio_2" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:background="@drawable/auton_col" /> 

    <RadioButton 
     android:id="@+id/auton_radio_3" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:background="@drawable/auton_col" /> 
</RadioGroup> 

Elaborare, layout_weight può essere utilizzato in due modi.

  • Se si dispone di più punti di vista in un layout lineare verticale e si desidera che l'ultimo a prendere tutto lo spazio rimanente, è possibile impostare le loro altezze per wrap_content e dare l'ultima vista un peso di 1.
  • Se si desidera che tutte le viste condividano lo spazio disponibile, impostare tutte le larghezze/altezze su 0dp o match_parent e assegnare a ciascuna vista lo stesso valore di peso. Condivideranno lo spazio allo stesso modo.

di avere il vostro sfondo scala drawable, fare una nuova XML che va nella cartella drawable/ che assomiglia a questo

<?xml version="1.0" encoding="utf-8"?> 
<bitmap xmlns:android="http://schemas.android.com/apk/res/android" 
    android:gravity="center" 
    android:src="@drawable/auton_col" /> 

nome è quello che vuoi (ad esempio auton_col_scale.xml) e di riferimento che disegnabili come il tuo background.

+0

Grazie, ha funzionato, ma per qualche ragione il parametro 'layout_weight' rende il mio' RadioButtons's due volte più lungo. http://i.imgur.com/7PZfm1j.png Normalmente sono solo la metà di questa larghezza. – rasen58

+0

dovresti rendere "auton_co1' una bitmap scalabile. La risposta è modificata con l'esempio –

+0

@ rasen58 imposta 'android: layout_width' dei pulsanti di opzione su '0dp' – Henry

0

Ho notato che l'uso di pesi di layout per i RadioButton li ha fatti allineare fuori centro, sebbene avessero sicuramente condiviso il 50% dello schermo (erano allineati a sinistra). Impostazione di un peso per ciascun RadioButton causato solo il testo da centrare/Facepalm

La XML di seguito mostra come allineare orizzontalmente due radiobuttons (potrebbe essere qualsiasi visite) e centrarli:

   <RadioGroup 
        android:id="@+id/radiogroup" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:orientation="horizontal"> 

        <Space 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_weight="1"/> 

        <RadioButton 
         android:id="@+id/radioyes" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="@string/yes" 
         android:checked="false"/> 

        <Space 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_weight="1"/> 

        <RadioButton 
         android:id="@+id/radiono" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="@string/no" 
         android:checked="false"/> 

        <Space 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_weight="1"/> 

       </RadioGroup> 
Problemi correlati