递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 2155|回复: 5
打印 上一主题 下一主题

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

[复制链接]

44

主题

232

帖子

902

积分

高级会员

Rank: 4

积分
902
跳转到指定楼层
楼主
发表于 2022-4-8 16:48:01 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 blackangeldsf 于 2022-4-28 15:23 编辑

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


我从网络上搜索了一下,有个解决方案就是,在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=







回复

使用道具 举报

17

主题

85

帖子

991

积分

高级会员

Rank: 4

积分
991
沙发
发表于 2022-4-9 09:17:10 | 只看该作者
默认就是这个样式啊,,如果想更改颜色,可以设置主题!
以前我记着谁开发过一个主题样式生成器的。可以解决你的问题。
回复

使用道具 举报

44

主题

232

帖子

902

积分

高级会员

Rank: 4

积分
902
板凳
 楼主| 发表于 2022-4-9 13:13:25 | 只看该作者
默认颜色不一样啊
回复

使用道具 举报

44

主题

232

帖子

902

积分

高级会员

Rank: 4

积分
902
地板
 楼主| 发表于 2022-4-10 17:38:29 | 只看该作者
我想在不改变背景的情况下修改单选框的颜色,咋做?
回复

使用道具 举报

44

主题

232

帖子

902

积分

高级会员

Rank: 4

积分
902
5#
 楼主| 发表于 2022-4-12 08:13:58 | 只看该作者
咋没人知道啊,很难吗,大神们
回复

使用道具 举报

44

主题

232

帖子

902

积分

高级会员

Rank: 4

积分
902
6#
 楼主| 发表于 2022-4-28 11:32:01 | 只看该作者
终于知道了,稍后发个帖子,分享下经验。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-6-7 04:09 , Processed in 0.098005 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表