Android radiogroup,radiobuttons之间的分隔线

时间:2012-05-22 16:19:00

标签: android radio-button radio-group divider

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

编辑:问题已解决。您可以在xml中的RadioButton内添加RadioGroup以外的视图。在我的情况下,您也可以以编程方式执行此操作,但请注意您的布局参数。 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 个答案:

答案 0 :(得分:18)

<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,不是吗?

答案 1 :(得分:15)

这是一种解决方法:

首先创建 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 的背景。这是一个例子:

<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的RadioGroup示例。 RadioGroup divider

答案 2 :(得分:6)

创建表示divider的形状drawable(称为“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>

将此drawable用作RadioGroup中的“divider”:

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

答案 3 :(得分: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”来进行修改