sirve - ¿Cómo espaciar uniformemente los botones de radio en Android?
radiobutton android checked (2)
Tengo tres botones de radio y quiero espaciarlos uniformemente en la pantalla. Cuando uso android:layout_weight="1"
, los botones se estiran en la pantalla. Entonces, ¿cómo tendría la misma cantidad de espacio entre cada uno de ellos que también se adapta a diferentes tamaños de pantalla?
<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>
Noté que el uso de ponderaciones de diseño para los botones RadioB hizo que se alinearan fuera del centro, a pesar de que definitivamente compartieron el 50% de la pantalla (estaban alineados a la izquierda). El establecimiento de una gravedad para cada RadioButton provocó que solo el texto estuviera centrado / facepalm
El XML a continuación muestra cómo alinear horizontalmente dos botones de radio (podría ser cualquier vista) y centrarlos:
<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>
Si desea que compartan el ancho de la pantalla por igual, debe configurar android:layout_width="match_parent"
en cada View
. Tu xml se convertiría en:
<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>
Para elaborar, layout_weight
se puede utilizar de dos maneras.
- Si tiene varias vistas en un diseño lineal vertical y desea que la última ocupe todo el espacio restante, puede establecer sus alturas en
wrap_content
y dar a la última vista un peso de 1. - Si desea que todas las vistas compartan el espacio disponible, establezca todos los anchos / alturas en
0dp
omatch_parent
ymatch_parent
a cada vista el mismo valor de peso. Ellos compartirán el espacio por igual.
Para tener una escala dibujable de fondo, cree un nuevo xml que vaya en su carpeta drawable/
tenga este aspecto
<?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" />
Dale el nombre que desees (por ejemplo, auton_col_scale.xml) y haz referencia a ese dibujo como fondo.