27

RadioButtons有没有一种简单的方法可以在a之间添加分隔符RadioGroup?我试过使用dividerxml 属性,但它似乎不起作用。如果它是相关的RadioGroup,我的布局中不包含任何子视图;我正在以RadioButtons编程方式添加。

编辑:问题解决了。RadioButton您可以在RadioGroupxml之外添加视图。在我的情况下,您也可以通过编程方式执行此操作,但请注意您的布局参数。Akki 有正确的想法,这对我有用:

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

4 回答 4

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

这对你有用。我真的很好奇您如何将视图添加到组视图中?那应该导致classcastexception,不是吗?

于 2014-02-04T16:51:45.230 回答
16

这是一个解决方法:

首先创建一个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>

这只是一个简单的黑色边框。将它放在您的 drawable/ 文件夹中,并将其命名为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。这取决于你,如果你需要定制它。:)

这是我的带有自定义边框(带角半径)和自定义分隔线 ShapeDrawable(s) 的 RadioGroup 示例。 RadioGroup 分隔符

于 2013-07-17T07:04:58.993 回答
6

创建表示分隔符的可绘制形状(称为“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>
于 2013-09-24T13:47:30.233 回答
0

如果您以编程方式创建 RadioGroup,那么您也必须以编程方式设置分隔线。你可以这样做:

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()));

...

注意:此代码部分在片段中工作。因此,如果要将其放入活动中,则必须通过将“getActivity()”更改为“YourActivityName.this”来进行修改

于 2018-08-26T07:01:30.647 回答