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

Kev*_*ood 11 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>
Run Code Online (Sandbox Code Playgroud)

Ene*_*nes 35

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

android:button="@null"
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的回答.我也发现了这一点,正如我在2012年2月15日的评论中所看到的那样. (3认同)
  • 为了兼容 Android 5 以下还添加 app:buttonCompat="@null" (2认同)

Kev*_*ood 22

我发现我无法删除选择器中的默认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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)