Android radiogroup, divider between radiobuttons

别说谁变了你拦得住时间么 提交于 2019-12-01 02:17:01
smilingky
<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>

That will work for you. And I am really curious how you add view into Group View? That should cause classcastexception, no ?

Here's a workaround:

First create a Shape Drawable as your divider. Here is an example:

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

This is just a simple black border. Put it inside your drawable/ folder and name it something like custom_divider.xml.

Then, go to your layout which uses a RadioGroup. Use the ShapeDrawable as a background for each of the RadioButton(s). Here is an example:

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

You can also add a ShapeDrawable to your RadioGroup. It depends on you, customize it if you need. :)

Here is my example of a RadioGroup with custom border (with corner radius) and custom divider ShapeDrawable(s).

Create shape drawable that represents divider (Called "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>

Use this drawable as "divider" in the RadioGroup:

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

If you create RadioGroup programmatically, then you have to set dividers programmatically too. You can do it like that:

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

...

Note: This code part is working in a fragment. So if you want to put it in to an activity, you have to modify by changing "getActivity()" with "YourActivityName.this"

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!