android - Administrar el diseño dentro de un grupo de radio horizontal orientado
radio-button orientation (4)
¿Alguna vez has encontrado una solución a esto? Mi solución intermedia podría ayudar, pero no es la imagen completa para mí. He podido hacer esto configurando anchos específicos, pero esto no permite que la vista cambie de tamaño para ajustarse al 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 primero 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 con los botones individualmente. Los 2 textos a continuación son izquierdo y derecho justificado en el diseño relativo. El uso de "layout_gravity" no tiene ningún efecto y "layout_weight" agrega el relleno a la derecha de cada botón, lo que hace que el botón que está más a la derecha ya no esté justificado.
Mucho pelo tirando de esto.
Estoy usando un TableLayout con TableRows como mi actividad principal.
Dentro del 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 radio más a la derecha con la pantalla del borde derecho, por lo que el "espacio" se encuentra entre el botón de opción izquierdo y el botón derecho (en lugar de después del botón de opción 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 (centro_horizontal) para colocar ambos botones en el medio (es decir, | espacio (x) (x) espacio |) sin embargo, no puedo ser capaz de dividirlos como quiero, como dije antes
Encontré mi solución. Una combinación de pesos y gravedad y la 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 el ancho de layout para cada botón de radio aún debe especificarse para anular el valor predeterminado de "37", que supongo que es el ancho de imagen del botón de opción predeterminado.
<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 un conjunto layout_gravioty, pero no un ajuste layout_weight para el botón más a la derecha.
Si entiendo que tiene una pregunta correcta, también puede probar el siguiente código 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" />
Todo lo que necesita para espaciar uniformemente un número arbitrario de botones horizontalmente en la pantalla:
- RadioGroup tiene que tener
android:orientation="horizontal"
&android:layout_width="fill_parent"
- Cada botón de radio debe tener
android:layout_weight="1"
, excepto el botón de la derecha (para que se alinee en el borde derecho de la pantalla)!
Esto me tomó horas para averiguar.
Aquí hay un código de ejemplo, con una bonificación 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"
/>