使用自定义选择器时删除默认单选按钮复选框

时间:2012-02-15 17:15:43

标签: android android-layout

我正在尝试设置单选按钮的样式,因此我创建了一个选择器。除标准单选按钮图像仍显示外,一切正常。如何删除默认单选按钮复选框。我尝试将drawable分配给空字符串,但编译器不喜欢它。

以下是我的一个选择器状态的代码:

<item android:state_checked="true" android:drawable="">
    <shape>
        <gradient
            android:startColor="#808080"
            android:centerColor="#2F2F2F"
            android:endColor="#2F2F2F"
            android:angle="270" />
        <stroke
            android:width="2dp"
            android:color="@color/black" />
        <corners
            android:radius="5dp" />
    </shape>
</item>

3 个答案:

答案 0 :(得分:34)

在布局XML中将按钮值设置为null

android:button="@null"

答案 1 :(得分:21)

我发现无法删除选择器中的默认radiobutton复选框。我发现可以通过在单选按钮本身的样式或定义中将“button”属性赋值为null来删除它。

以下是使用样式的示例。

<RadioButton
    android:id="@+id/myRadioButton"
    style="@style/RadioButtonStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/custom_radio_button"/>

<style name="RadioButtonStyle" parent="@android:style/Widget.CompoundButton">
    <item name="android:background">@drawable/radiobutton_selector</item>
    <item name="android:button">@null</item>
</style>

radiobutton_selector定义了一个选择器,用于在不同的检查状态下绘制按钮。这是检查状态:

<item android:state_checked="true">
    <shape>
        <gradient
            android:startColor="@color/titleButtonCheckedGradientLight"
            android:centerColor="@color/titleButtonCheckedGradientDark"
            android:endColor="@color/titleButtonCheckedGradientDark"
            android:angle="270" />
        <stroke
            android:width="1dp"
            android:color="@color/titleButtonBorder" />
        <corners
            android:radius="5dp" />
    </shape>
</item>

答案 2 :(得分:0)

如果您想通过编程方式将自定义背景设置为RadioButton,则可以这样设置

radioButton.setButtonDrawable(null);
radioButton.setBackgroundResource(R.drawable.your_custom_drawable);