使用XML drawable为RadioButton设置样式

时间:2013-12-24 06:38:48

标签: java android xml

我想使用简单的形状状态选择器来更改RadioButton的指示器。我创建了以下名为moon_radio.xml的XML,并将其放在drawable文件夹中。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:state_pressed="false">
        <shape
            android:shape="oval">
            <solid android:color="@color/moon_light_plate" />
        </shape>
    </item>
    <item android:state_checked="false" android:state_pressed="false">
        <shape
            android:shape="oval">
            <stroke
                android:width="2dp"
                android:color="@color/moon_light_plate" />
        </shape>
    </item>
    <item android:state_checked="true" android:state_pressed="true">
        <shape
            android:shape="oval">
            <solid android:color="@color/moon_light_plate_pressed" />
        </shape>
    </item>
    <item android:state_checked="false" android:state_pressed="true">
        <shape
            android:shape="oval">
            <stroke
                android:width="2dp"
                android:color="@color/moon_light_plate_pressed" />
        </shape>
    </item>
</selector>

然后我在布局中的RadioButton上指定android:button="@drawable/moon_radio"属性。由于某种原因,这不起作用。怎么了?

*编辑* 可能是我解释不清楚,但我不想更改背景,我想更改指标,即默认点。

这就是我得到的:

enter image description here

这就是我想得到的&#34;

enter image description here

3 个答案:

答案 0 :(得分:2)

您应该在android:button RadioButton属性中指定此内容,这是正确的,您只需要添加android:background="@android:color/transparent"

答案 1 :(得分:1)

您需要定义RadioButton,如下所示 -

<RadioButton
    android:id="@+id/radio0"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/moon_radio"
    android:button="@android:color/transparent"
    android:checked="true"
    android:text="RadioButton1" />

如果设置android:button="@android:color/transparent",设置radioButton背景将符合您的目的。

答案 2 :(得分:0)

要查看默认的RadioButton使用的内容,请根据应用主题,查看其中一个API的源代码。例如,您可以从SDK Manager中安装API 18的“Androids源代码”。它将被放置在:

sdk\platforms\android-18\data\res\drawable\

找到 btn_radio.xml btn_radio_holo_dark.xml btn_radio_holo_light.xml 文件。它们具有不同状态的状态选择器,您可以看到它们使用的是哪些png文件。

您可以在drawable-mdpi \目录中找到这些png文件,看看它们的样子(如 btn_radio_on.png )。

然后,您可以将btn_radio.xml文件复制到drawable目录,并使其用于不同状态的图像(或可绘制形状)。

查看其中一个文件,我认为你的状态是错误的(比如checked = true pressed = false)。我没有在默认文件中看到,除了最后一个只检查了= true。它从上到下遍历选择器。因此,如果没有选择它上面的那个,它只会到达底部。

而且,你将你的选择器drawable放在android:button属性中。