studio - Grupo de radio de Android, divisor entre botones de radio.
radio button toggle android (4)
Aquí hay una solución:
Primero crea una Forma Dibujable como tu divisor. Aquí hay un ejemplo:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid
android:color="@color/white" />
<stroke
android:width="0.3dp"
android:color="@color/black" />
</shape>
Esto es sólo un simple borde negro. Póngalo dentro de su carpeta / dibujable y asígnele un nombre como custom_divider.xml .
Luego, vaya a su diseño que utiliza un Grupo de Radio . Use el ShapeDrawable como fondo para cada uno de los botones de radio. Aquí hay un ejemplo:
<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:divider="@color/black" >
<RadioButton
android:id="@+id/radio0"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/custom_radiogroup_divider"
android:checked="true"
android:text="RadioButton" />
<RadioButton
android:id="@+id/radio1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/custom_radiogroup_divider"
android:text="RadioButton" />
<RadioButton
android:id="@+id/radio2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/custom_radiogroup_divider"
android:text="RadioButton" />
</RadioGroup>
También puede agregar un ShapeDrawable a su Grupo de Radio. Depende de ti, personalízalo si lo necesitas. :)
Aquí está mi ejemplo de un grupo de radio con borde personalizado (con radio de esquina) y divisor personalizado ShapeDrawable (s).
¿Hay una forma sencilla de agregar un divisor entre RadioButtons
dentro de un RadioGroup
? He intentado usar el atributo xml divider
y no parece estar funcionando. En caso de que sea relevante, el grupo de RadioGroup
en mi diseño no contiene ninguna vista secundaria; Estoy agregando los RadioButtons
programáticamente.
EDITAR : Problema resuelto. Puede agregar vistas además de RadioButton
dentro de RadioGroup
en el xml. En mi caso, también puede hacerlo mediante programación, pero tenga cuidado con los parámetros de diseño. Akki tuvo la idea correcta, y esto me funcionó:
for (int i = 0; i < items.size(); i++) {
if (i > 0) {
// add a divider with height of 1 pixel
View v = new View(this);
v.setLayoutParams(new RadioGroup.LayoutParams(LayoutParams.MATCH_PARENT, 1));
v.setBackgroundColor(android.R.color.darker_gray);
mRadioGroup.addView(v);
}
RadioButton rb = new RadioButton(this);
/* set other properties ... */
mRadioGroup.addView(rb);
}
Cree una forma dibujable que represente el divisor (llamado "radio_group_divider"):
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<size android:width="12dp" />
<solid android:color="@color/transparent" />
</shape>
Use este dibujo como "divisor" en el Grupo de Radio:
<RadioGroup
...
android:divider="@drawable/radio_group_divider"
android:showDividers="middle"
...>
</RadioGroup>
Si crea RadioGroup programáticamente, entonces también tiene que configurar los divisores programáticamente. Puedes hacerlo así:
RadioGroup radioGroup = new RadioGroup(getActivity()); //We create a new radio group
radioGroup.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);
radioGroup.setDividerDrawable(getResources().getDrawable(android.R.drawable.divider_horizontal_textfield, getActivity().getTheme()));
...
Nota: esta parte del código está trabajando en un fragmento. Entonces, si desea ponerlo en una actividad, debe modificar cambiando "getActivity ()" con "YourActivityName.this"
<RadioGroup
android:id="@+id/location_radio_group"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="?android:attr/dividerHorizontal"
android:showDividers="middle">
</RadioGroup>
Eso funcionará para ti. ¿Y tengo mucha curiosidad sobre cómo agregar la vista en la vista de grupo? Eso debería causar classcastexception, ¿no?