递归火山软件开发平台

标题: [已解决]不改变背景,如何自定义单选框按钮颜色? [打印本页]

作者: blackangeldsf    时间: 2022-4-8 16:48
标题: [已解决]不改变背景,如何自定义单选框按钮颜色?
本帖最后由 blackangeldsf 于 2022-4-28 15:23 编辑

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

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

第一种方式:


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

  10. </selector>
复制代码

3、在style.xml中添加自定义主题,代码如下:
  1. <!-- CustomRadiotheme -->
  2.     <style name="CustomRadioTheme" parent="@android:style/Widget.CompoundButton.CheckBox">
  3.         <item name="android:button">@drawable/radio_style</item>
  4.     </style>
复制代码
4、在单选框的xml文件中应用自定义主题,代码如下:
  1. <RadioButton
  2.         android:id="@+id/rb_message_radio"
  3.         android:layout_width="wrap_content"
  4.         android:layout_height="wrap_content"
  5.         style="@style/CustomRadioTheme" />
复制代码

第二种方式:
1、给单选框增加一个selector属性,代码如下:
  1. android:button="@drawable/radiobutton_selector"
复制代码

2、定义selector属性内容,代码如下:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <selector xmlns:android="http://schemas.android.com/apk/res/android">

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

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


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

  3.     ColorStateList colorStateList = new ColorStateList(
  4.             new int[][]{

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

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

  11.             }
  12.         );                       


  13.     radio.setButtonTintList(colorStateList);//set the color tint list
  14.     radio.invalidate(); //could not be necessary
  15. }
复制代码



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


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


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








作者: 麒麟软件    时间: 2022-4-9 09:17
默认就是这个样式啊,,如果想更改颜色,可以设置主题!
以前我记着谁开发过一个主题样式生成器的。可以解决你的问题。
作者: blackangeldsf    时间: 2022-4-9 13:13
默认颜色不一样啊
作者: blackangeldsf    时间: 2022-4-10 17:38
我想在不改变背景的情况下修改单选框的颜色,咋做?
作者: blackangeldsf    时间: 2022-4-12 08:13
咋没人知道啊,很难吗,大神们
作者: blackangeldsf    时间: 2022-4-28 11:32
终于知道了,稍后发个帖子,分享下经验。




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4