2012-05-22 18 views
16

Gibt es eine einfache Möglichkeit, einen Teiler zwischen RadioButtons innerhalb einer RadioGroup hinzuzufügen? Ich habe versucht, mit dem divider XML-Attribut und es scheint nicht zu funktionieren. Wenn es relevant ist, enthält die RadioGroup in meinem Layout keine untergeordneten Ansichten; Ich füge die RadioButtons programmgesteuert hinzu.Android Radiogruppe, Teiler zwischen Radiobuttons

BEARBEITEN: Problem gelöst. Sie können Ansichten neben RadioButton innerhalb RadioGroup in der XML hinzufügen. In meinem Fall können Sie es auch programmatisch machen, aber seien Sie vorsichtig mit Ihren Layout-Parametern. Akki hatte die richtige Idee, und das war für mich:

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

Es kann hilfreich sein, wenn Sie ein Bild von dem erstellen könnten, was Sie machen möchten. – mtmurdock

+4

Radio-Gruppe ist von linearen Layout abgeleitet, so erstellen Sie ein Ansichtsobjekt und fügen Sie es nach jedem Radio-Button mit Ausnahme der letzten. – Akram

+0

mtmurdock: Ich brauche nur eine dünne horizontale Linie zwischen jedem Gegenstand. Akki: Ich dachte daran, aber ich hoffte, dass es etwas einfacheres gab. Es scheint so ein ziemlich offensichtlicher Anwendungsfall zu sein, von dem man erwartet hätte, dass Google innerhalb des Rahmens dafür gesorgt hätte. – Karakuri

Antwort

13

Hier ist eine Abhilfe:

Erstellen Sie zunächst eine Form Drawable als Teiler. Hier ein Beispiel:

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

Dies ist nur ein einfacher schwarzer Rand. Legen Sie es in Ihren zeichnenden/Ordner und nennen Sie es so etwas wie custom_divider.xml.

Dann gehen Sie zu Ihrem Layout, das eine RadioGroup verwendet. Verwenden Sie ShapeDrawable als Hintergrund für jeden der RadioButton (s). Hier ein Beispiel:

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

Sie können Ihrer RadioGroup auch ein ShapeDrawable hinzufügen. Es hängt von Ihnen ab, passen Sie es an, wenn Sie brauchen. :)

Hier ist mein Beispiel für eine RadioGroup mit benutzerdefinierten Rahmen (mit Eckenradius) und benutzerdefinierten Teiler ShapeDrawable (s). RadioGroup divider

6

Form drawable erstellen, die Teiler darstellt (genannt "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> 

verwenden drawable als "Teiler" im 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> 

die funktioniert für dich. Und ich bin wirklich neugierig, wie Sie die Ansicht in der Gruppenansicht hinzufügen? Das sollte Klassenkasstexzeption verursachen, nein?

Verwandte Themen