2012-05-22 8 views
16

Czy istnieje prosty sposób dodania dzielnika między RadioButtons wewnątrz RadioGroup? Próbowałem już używać atrybutu xml divider i wygląda na to, że nie działa. Jeśli jest to istotne, RadioGroup w moim układzie nie zawiera widoków podrzędnych; Dodaję programowo RadioButtons.Android radiogroup, dzielnik między radiobuttons

EDIT: Problem rozwiązany. Możesz dodać widoki oprócz RadioButton wewnątrz RadioGroup w xml. W moim przypadku można to również zrobić programowo, ale należy zachować ostrożność w odniesieniu do parametrów układu. Akki miał rację, a ten pracował dla mnie:

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

Może być pomocne, jeśli możesz podać obraz tego, co próbujesz wykonać. – mtmurdock

+4

grupa radiowa pochodzi z układu liniowego, więc utwórz obiekt widoku i dodaj go po każdym przycisku z wyjątkiem ostatniego. – Akram

+0

mtmurdock: Potrzebuję cienkiej poziomej linii między każdą pozycją. Akki: Pomyślałem o tym, ale miałem nadzieję, że było coś prostszego. Wydaje się, że jest to dość oczywisty przypadek użycia, który można by oczekiwać, że Google dokonał w tym zakresie przepisów. – Karakuri

Odpowiedz

13

Oto obejście:

Najpierw utwórz Kształt rozciągliwej jako dzielnik. Oto przykład:

<?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> 

To tylko prosta czarna ramka. Umieść go w swoim folderze/folderze i nazwij go czymś takim, jak custom_divider.xml.

Następnie przejdź do swojego układu, który używa RadioGroup. Użyj ShapeDrawable jako tła dla każdego z (s) RadioButton. Oto przykład:

<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> 

Możesz również dodać ShapeDrawable do swojej grupy RadioGroup. To zależy od Ciebie, dostosuj go, jeśli potrzebujesz. :)

Oto mój przykład grupy RadioGroup z niestandardową ramką (z promieniem naroża) i niestandardową dzielnicą ShapeDrawable (s). RadioGroup divider

6

Tworzenie kształtu rozciągliwej, która reprezentuje rozdzielacz (zwana "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> 

Użyj tego odkształcalne jako "rozdzielacz" w 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> 

który będzie działał dla Ciebie. I jestem naprawdę ciekawa, w jaki sposób dodajesz widok do widoku grupowego? To powinno spowodować wyjątek klasy, nie?

Powiązane problemy