2012-05-22 14 views
16

¿Hay una manera simple de agregar un divisor entre RadioButtons dentro de RadioGroup? Intenté usar el atributo divider xml y parece que no funciona. En caso de que sea relevante, el RadioGroup en mi diseño no contiene ninguna vista secundaria; Estoy agregando el RadioButtons programmatically.Radiogrupo de Android, divisor entre botones de radio

EDIT: Problema resuelto. Puede agregar vistas además de RadioButton dentro de RadioGroup en el xml. En mi caso, también puedes hacerlo programáticamente, pero ten cuidado con tus parámetros de diseño. Akki tenía la idea correcta, y esto funcionó para mí:

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); 
} 
+0

Puede ser útil si pudiera proporcionar una imagen de lo que está tratando de hacer. – mtmurdock

+4

El grupo de radio se deriva del diseño lineal así que crea un objeto de vista y agrégalo después de cada botón de radio excepto el último. – Akram

+0

mtmurdock: Solo necesito una delgada línea horizontal entre cada elemento. Akki: Pensé en eso, pero esperaba que hubiera algo más simple. Parece un caso de uso bastante obvio que uno esperaría que Google lo hubiera incluido dentro del marco. – Karakuri

Respuesta

13

Aquí hay una solución:

En primer lugar crear una forma Disponibles como su 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 solo un simple borde negro. Colóquelo dentro de su carpeta/dibujable y asígnele el nombre custom_divider.xml.

Luego, vaya a su diseño que usa un RadioGroup. Utilice ShapeDrawable como fondo para cada uno de los RadioButton (s). 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 RadioGroup. Depende de ti, personalízalo si lo necesitas. :)

Aquí está mi ejemplo de un RadioGroup con borde personalizado (con radio de esquina) y divisor personalizado ShapeDrawable (s). RadioGroup divider

6

Crear dibujable forma que representa 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> 

Utilice esta estirable como "divisor" en el RadioGroup:

<RadioGroup 
     ... 
     android:divider="@drawable/radio_group_divider" 
     android:showDividers="middle" 
     ...> 
</RadioGroup> 
14
<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> 

que funcionará para ti. Y estoy realmente curioso acerca de cómo agregar vista a la Vista de grupo? Eso debería causar classcastexception, no?

Cuestiones relacionadas