Administrar el diseño dentro de un radiogrupo horizontal orientado

Estoy utilizando un TableLayout con TableRows como mi actividad principal.

Dentro de TableLayout hay un grupo de radio que contiene 2 botones de radio dentro de la actividad (el grupo de radio está dentro de una fila de la tabla). Quiero poder alinear el botón de la derecha en la pantalla del borde derecho, por lo que la "brecha" se encuentra entre el botón de radio izquierdo y el botón derecho (en lugar de después del botón de radio derecho). es decir

Así que en lugar de tener
| (X) (x) brecha |
tendré
| (X) brecha (x) |

Donde (x) son los botones de radio y | Son los bordes de la pantalla

Puedo usar la gravedad (center_horizontal) para poner los dos botones en el medio (es decir | gap (x) (x) gap |) sin embargo no puedo ser capaz de dividirlos de la manera que quiero como se dijo antes

Todo lo que necesita para espaciar uniformemente un número arbitrario de botones horizontalmente a través de la pantalla:

  1. RadioGroup tiene que tener android:orientation="horizontal" & android:layout_width="fill_parent"
  2. Cada botón de radio tiene que tener android:layout_weight="1" , excepto el botón más a la derecha (para que se alinee en el borde derecho de la pantalla)!

Captura de pantalla de Landscape

Esto me tomó horas para averiguar.

He aquí un ejemplo de código, con un bono de dos etiquetas de texto y los bordes derecho e izquierdo de la pantalla, para una aplicación de encuesta.

 <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" /> 

Encontré mi solución. Una combinación de pesos y gravedad y eliminación de los márgenes. El grupo de radio puede tener layout_width = "fill_parent". Cada botón de radio debe tener layout_weight = "1", pero la anchura de diseño para cada radiobutton debe ser especificado para reemplazar el valor predeterminado de "37", que supongo que es el ancho de la imagen del botón de radio por defecto.

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

El primer botón debe tener:

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

El último botón debe tener:

  android:layout_gravity="center|right" 

Nota: todos los botones tienen layout_gravioty establecido, pero no layout_weight configuración para el botón derecho más!

¿Alguna vez encontraste una solución a esto? Mi solución intermedia podría ayudar, pero no es la imagen completa para mí. He podido hacer esto fijando anchuras específicas, pero esto no permite que la visión cambie de tamaño para caber el ancho de la pantalla:

  <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> 

Tenga en cuenta que no hay margen en el último botón.

Estoy tratando de tener 5 botones personalizados en un grupo de radio, con el primer justificado a la izquierda y el último justificado a la derecha. Los botones tienen exactamente 50 píxeles de ancho y no quiero ningún texto asociado a los botones individualmente. Los 2 textos que aparecen a continuación están a la izquierda ya la derecha en el diseño relativo. El uso de "layout_gravity" no tiene efecto y "layout_weight" agrega relleno a la derecha de cada botón, lo que hace que el botón derecho no esté justificado.

Mucho pelo tirando de esto.

Si entiendo que la pregunta correcta, también puede intentar código siguiente dentro de 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" /> 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.