簡體   English   中英

Android radiogroup,radiobuttons之間的分隔線

[英]Android radiogroup, divider between radiobuttons

有沒有一種簡單的方法在RadioGroup RadioButtons之間添加一個分隔符? 我嘗試過使用divider xml屬性,但似乎沒有用。 如果它是相關的,我的布局中的RadioGroup不包含任何子視圖; 我正在以編程方式添加RadioButtons

編輯 :問題解決了。 您可以在RadioGroup中的RadioGroup內添加除RadioButton之外的視圖。 在我的情況下,您也可以以編程方式執行此操作,但請注意您的布局參數。 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);
}
<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,不是嗎?

這是一個解決方法:

首先創建一個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>

您還可以向RadioGroup添加ShapeDrawable。 這取決於您,如果您需要,可以自定義。 :)

這是我的一個帶有自定義邊框(帶有圓角半徑)和自定義分隔符ShapeDrawable(s)的RadioGroup的示例。 RadioGroup分頻器

創建表示分隔符的形狀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>

在RadioGroup中將此drawable用作“divider”:

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

如果以編程方式創建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”來進行修改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM