安卓RadioGroup中,单选按钮之间的分隔(Android radiogroup, divide

2019-06-24 16:59发布

有一个简单的方法来增加之间的分隔RadioButtons一个内部RadioGroup ? 我已经使用试图divider XML属性,它似乎并没有工作。 在情况下,它相关的RadioGroup在我的布局不包含任何孩子的意见; 我添加了RadioButtons编程。

编辑 :问题解决了。 您可以添加之外观点RadioButtonRadioGroup的XML。 在我的情况,你也可以做到这一点编程,但要小心,你的布局PARAMS。 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);
}

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

这会为你工作。 我真的很好奇你如何添加视图到组视图? 这应该引起ClassCastException异常,不是吗?



Answer 2:

这里有一个解决方法:

首先创建一个形状绘制对象为您的分频器。 下面是一个例子:

<?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作为每个单选按钮 (一个或多个)的背景。 下面是一个例子:

<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中的例子。



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


Answer 4:

如果编程创建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”修改



文章来源: Android radiogroup, divider between radiobuttons