blackangeldsf 发表于 2022-4-8 16:48:01

[已解决]不改变背景,如何自定义单选框按钮颜色?

本帖最后由 blackangeldsf 于 2022-4-28 15:23 编辑

实在不好意思,总在麻烦大家,主要是找不到相关的资料,没有任何安卓开发的知识和经验。所以问题比较多,请大家见谅。:loveliness:
我想实现图中那样,在不改变背景颜色的情况下,修改单选框样式,但却不知道怎样做。


我从网络上搜索了一下,有个解决方案就是,在xml文件里设计单选框的样式。第一种方法是:

第一种方式:


1、准备两张图片,一张是选中状态,另一张是未选中状态
2、定义选中与未选中时的xml,代码如下:
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
      android:drawable="@drawable/radio_check"
      android:state_checked="true"/>
    <item
      android:drawable="@drawable/radio_nor"
      android:state_checked="false"/>
    <item
      android:drawable="@drawable/radio_nor"/>

</selector>
3、在style.xml中添加自定义主题,代码如下:
<!-- CustomRadiotheme -->
    <style name="CustomRadioTheme" parent="@android:style/Widget.CompoundButton.CheckBox">
      <item name="android:button">@drawable/radio_style</item>
    </style>4、在单选框的xml文件中应用自定义主题,代码如下:
<RadioButton
      android:id="@+id/rb_message_radio"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      style="@style/CustomRadioTheme" />
第二种方式:
1、给单选框增加一个selector属性,代码如下:
android:button="@drawable/radiobutton_selector"
2、定义selector属性内容,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/ic_select_yes" android:state_checked="true" android:state_enabled="true"/>
    <item android:drawable="@drawable/ic_select_no" android:state_checked="false" android:state_enabled="true"/>

</selector>第三种方式:
使用setButtonTintList设置单选框样式,代码如下:


if(Build.VERSION.SDK_INT>=21)
{

    ColorStateList colorStateList = new ColorStateList(
            new int[][]{

                  new int[]{-android.R.attr.state_enabled}, //disabled
                  new int[]{android.R.attr.state_enabled} //enabled
            },
            new int[] {

                  Color.BLACK //disabled
                  ,Color.BLUE //enabled

            }
      );                     


    radio.setButtonTintList(colorStateList);//set the color tint list
    radio.invalidate(); //could not be necessary
}



第四种方式:
仍然是通过xml文件控制,代码如下:
<RadioButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/radio"
    android:checked="true"
    android:buttonTint="@color/your_color"/>
在color.xml中增加如下内容:
<color name="your_color">#e75748</color>


以上四种方法,不知道哪一种是正确的,也不知道如何在火山中实现。请教大家 了,谢谢。


此问题已解决,具体方法请参看http://bbs.voldp.com/forum.php?mod=viewthread&tid=13789&extra=



moz-extension://9c91bbd0-d002-4a0d-944e-e00af4b684ab/assets/img/T.cb83a013.svg



麒麟软件 发表于 2022-4-9 09:17:10

默认就是这个样式啊,,如果想更改颜色,可以设置主题!
以前我记着谁开发过一个主题样式生成器的。可以解决你的问题。

blackangeldsf 发表于 2022-4-9 13:13:25

默认颜色不一样啊

blackangeldsf 发表于 2022-4-10 17:38:29

我想在不改变背景的情况下修改单选框的颜色,咋做?

blackangeldsf 发表于 2022-4-12 08:13:58

咋没人知道啊,很难吗,大神们

blackangeldsf 发表于 2022-4-28 11:32:01

终于知道了,稍后发个帖子,分享下经验。
页: [1]
查看完整版本: [已解决]不改变背景,如何自定义单选框按钮颜色?