Hay una manera sencilla de añadir un separador entre RadioButtons dentro de un RadioGroup? He intentado usar el divider atributo xml y no parece estar funcionando. En caso de que sea pertinente, la RadioGroup en mi diseño no contiene ningún niño vistas; estoy añadiendo la RadioButtons mediante programación.

EDITAR: Problema resuelto. Puede agregar puntos de vista además de RadioButton dentro de RadioGroup en el xml. En mi caso, también puede hacerlo mediante programación, pero tenga cuidado acerca de su diseño params. 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);
}
  • Puede ser útil si usted puede proporcionar una imagen de lo que estamos tratando de hacer.
  • radio grupo se deriva de lineal del diseño para crear un objeto de la vista y agregar después de cada botón de radio, excepto la última.
  • mtmurdock: sólo necesito una fina línea horizontal entre cada elemento. Akki: he pensado en eso, pero fue con la esperanza de que había algo más sencillo. Parece un uso muy evidente caso de que uno esperaría que Google han tomado disposiciones para que en el marco.
InformationsquelleAutor Karakuri | 2012-05-22

4 Comentarios

  1. 17
    <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 va a trabajar para usted. Y estoy realmente curioso cómo agregar vista en la Vista de Grupo? Que debe causar classcastexception, ¿no ?

    • Esto no funciona para mí. No tiene ningún efecto. Pero si he de definir y asignar mi propia forma para android:divisor para el RadioGroup (no los botones individuales) en un archivo xml, funciona. Alguien sabe por qué?
    • Esto no funciona. Sólo algunos cambios en el espaciado.
    • (Por cierto, esto no funciona para mí, hasta que he añadido una orientación vertical a mi RadioGroup)
  2. 15

    He aquí una solución:

    Crear primero una Forma Dibujable como su divisor. Aquí está 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 una simple borde negro. Lo puso dentro de su dibujable/carpeta y el nombre de algo como custom_divider.xml.

    A continuación, vaya a su diseño que utiliza un RadioGroup. El uso de la ShapeDrawable como un fondo para cada uno de los RadioButton(s). Aquí está 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 usted, personalizar si es necesario. 🙂

    Aquí está mi ejemplo de un RadioGroup con borde personalizado (con el radio de la esquina) y personalizado divisor ShapeDrawable(s).
    Android radiogroup, el divisor entre los componentes radiobutton

  3. 6

    Crear la forma dibujable 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>

    Utilizar esta imagen como «divisor» en el RadioGroup:

    <RadioGroup
            ...
            android:divider="@drawable/radio_group_divider"
            android:showDividers="middle"
            ...>
    </RadioGroup>
  4. 0

    Si usted cree RadioGroup mediante programación, entonces usted tiene que establecer los divisores de programación también. 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: Este código parte está trabajando en un fragmento. Así que si quieres ponerlo en una actividad, se tiene que modificar cambiando «getActivity()» con «YourActivityName.este»

Dejar respuesta

Please enter your comment!
Please enter your name here