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);
}
Ответы
Ответ 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>