Android-радиостанция Android, разделитель между радиолюбителями - программирование
Подтвердить что ты не робот

Android-радиостанция Android, разделитель между радиолюбителями

Есть ли простой способ добавить разделитель между RadioButtons внутри a RadioGroup? Я пробовал использовать атрибут divider xml и, похоже, не работает. Если это имеет значение, RadioGroup в моем макете не содержит дочерних представлений; Я добавляю RadioButtons программно.

EDIT: проблема решена. Вы можете добавлять представления, кроме RadioButton внутри RadioGroup в xml. В моем случае вы также можете делать это программно, но будьте осторожны с параметрами макета. У Акки была правильная идея, и это сработало для меня:

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);
}
4b9b3361

Ответ 1

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

Это сработает для вас. И мне действительно интересно, как вы добавляете представление в Group View? Это должно вызвать classcastexception, нет?

Ответ 2

Здесь обходной путь:

Сначала создайте Shape Drawable как ваш разделитель. Вот пример:

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

Это просто черная граница. Поместите его в свою папку/папку и назовите его что-то вроде custom_divider.xml.

Затем перейдите к макету, в котором используется RadioGroup. Используйте ShapeDrawable в качестве фона для каждого из RadioButton (s). Вот пример:

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

Вы также можете добавить ShapeDrawable в свою RadioGroup. Это зависит от вас, настройте его, если вам нужно.:)

Вот мой пример RadioGroup с пользовательской границей (с угловым радиусом) и пользовательским разделителем ShapeDrawable (s). RadioGroup divider

Ответ 3

Создайте форму, которая представляет собой разделитель (вызывается "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>

Используйте эту возможность как "разделитель" в RadioGroup:

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