此篇文章主要实现功能:RadioGroup控件根据服务端返回的数据动态添加RadioButton

关于RadioButton动态设置背景颜色和字体颜色,踩过好多坑,接下来我总结一下遇到的所有问题及解决方案,供大家参考下,希望对大家有帮助。

1.xml文件准备


首先,我们先来写radiobutton选中和未选中的背景颜色的xml文件。
在drawable文件夹下新建一个文件:button_bg.xml 
代码如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" ><item android:state_checked="true" android:drawable="@drawable/button_selected" ></item><item android:state_checked="false" android:drawable="@drawable/button_unselected"></item>
</selector>

选中的背景颜色和未选中的背景颜色的drawable文件分别如下: 
button_selected.xml :

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><solid android:color="@color/white"/><corners android:radius="3dp"/><stroke  android:width="1dp" android:color="#FF0000"/>
</shape>

button_unselected.xml :

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><solid android:color="@color/lightgray2"/><corners android:radius="3dp"/><stroke  android:width="1dp" android:color="@color/lightgray2"/>
</shape>

2. 代码动态设置Radiobutton选中和未选中的字体颜色的xml文件


  • 注意,这里就要踩坑了,网上很多的写法跟设置背景颜色的写法一样,可以写出来发现,背景颜色对应变化了,可是字体颜色并没有对应发生变化,试了好多次,终于找到了正确的办法。
  • 在Activity代码中设置背景颜色和字体颜色时可以发现,设置背景颜色可以直接用drawable文件夹下的资源文件:button.setBackgroundResource(R.drawable.button_bg);
  • 而设置字体颜色时,不能用R.drawable… 只能用R.color….于是,我们需要在res文件夹下新建一个color文件夹,
  • 在color文件夹下新建一个button_txt_color.xml资源文件,表示选择和未选中的字体颜色:

如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:color="@color/red" android:state_pressed="true" /><item android:color="@color/red" android:state_checked="true" /><item android:color="@color/red" android:state_focused="true" /><item android:color="@color/common_h1" />
</selector>

注意:这个文件中就是要注意的地方了,必须使用android:color="@color/software_textColor_selected",不能使用android:textColor属性。
这样资源文件这些就写好了,接下来就是代码应用了。

3.代码动态设置资源


在代码中设置RadioButton的背景颜色和字体颜色,并设置默认选中项。
这里就直接上代码了,都能看懂,也有注释。

 for(int i=0; i < bottomMenuList.size(); i++) {RadioButton radioButton = new RadioButton(getMyActivity());radioButton.setId(i);//设置RadioButton的背景radioButton.setBackgroundResource(R.drawable.selector_button_jingxuan);//设置RadioButton的文本字体颜色radioButton.setTextColor(getResources().getColorStateList(R.color.color_selector_textview));//设置按钮的样式radioButton.setButtonDrawable(null);//设置文字距离按钮四周的距离radioButton.setPadding(50, 0, 50, 0); //设置按钮文本radioButton.setText(bottomMenuList.get(i).getMenu_name());//设置字体加粗TextPaint tp = radioButton.getPaint();tp.setFakeBoldText(true);//设置RadioButton间距marginRadioGroup.LayoutParams params = new RadioGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);params.setMargins(10,0,10,0);//容器组装mRgpSnackfood.addView(radioButton, params);}//设置默认值mRgpSnackfood.check(0);

这里就要注意了,

  • 一般都会以为设置默认选中项用button.setChecked(true);来实现,这样是达不到效果的,所以还是需要使用radioGroup.check(0)来设置,当前前提也必须要有button.setId(i); 这句代码。
  • radioButton.setTextColor(getResources().getColorStateList(R.color.color_selector_textview));获取颜色资源使用getResources().getColorStateList(),而不是getResources().getColor()。

好了,总结的差不多了,希望能帮助到跟我一样踩坑的朋友们。

Android RadioGroup动态加入RadioButton,动态设置选中和未选中的颜色及设置默认选中相关推荐

  1. devexpress表格控件gridcontrol设置隔行变色、焦点行颜色、设置(改变)显示值、固定列不移动(附源码)...

    介绍一些常用的gridcontrol设置. 1.设置隔行变色.首先设置显示隔行变色,步骤:OptionsView-->EnableAppearanceEvenRow-->true和Opti ...

  2. 设置element ui table表格线条颜色以及设置圆角/解决element ui table设置圆角后线条不显示或显示模糊问题,亲测有效

    问题描述 table表格设置为圆角后并且设置table border颜色,设置圆角后导致修改颜色后的border无法显示 问题解决 /* 设置圆角以及边框颜色 */.el-table{border-r ...

  3. vue 复选框默认选中_vue中,radio或者checkbox如何默认选中

    有一个rad览或讲琐了过自系一读页围这就多网解元当维io或者checkbox选项框组,如直分调浏器代,刚求的一学础过功互有解小久宗点差维含数下: :id="getId()" nam ...

  4. mysql数据库连接空闲超时设置不生效,未区分全局变量及interactive_timeout设置

    为了测试数据库超时(默认8小时),需要修改数据库超时时间.但是设置之后发现并没有改变,有两个原因: 第一个就是未区分全局变量和会话变量,设置和查询时带上global查询的是全局变量. 第二个是因为超时 ...

  5. 水星mw325r设置无线服务器未响应,水星路由器325r设置WiFi隐藏信号方法

    水星路由器325r设置WiFi隐藏信号方法 水星MW325R无线路由器怎么设置隐藏WiFi信号 要在水星MW325R路由器上设置隐藏WiFi信号,只需要先登录到水星MW325R的设置界面,然后在&qu ...

  6. 计算机桌面菜单栏的设置,电脑下面的任务栏颜色怎么设置

    优质回答 回答者:4413 第一种方法: 1在电脑桌面空白处,右键单击,选择"个性化" 2选择页面下方的"窗口颜色" 3有各种颜色供你选择,在这里以红色为例 4 ...

  7. html给按钮加颜色代码,css按钮属性 html中按钮的字体颜色怎么设置?

    css 属性设置input 中type为button 的属性 css中什么属性可以控制按钮的形状 1.dispaly 适用于css1和css2,用于设置目标对象是否及如何显示.该属性的常用值为none ...

  8. jquery中如何获取select 下拉框默认选中的值?

    通过id获取下拉框默认选中的值 <select class="form-control" id="numbers"><option value ...

  9. html 设置滚动条颜色,CSS设置滚动条颜色步骤

    本文向大家描述一下如何使用CSS设置滚动条颜色,如果你在浏览网页的时候看到网页滚动条颜色不是系统默认的样式,而是漂亮的红色或其它颜色样式,那么这就是使用CSS代码设置的效果. CSS设置滚动条颜色 我 ...

最新文章

  1. 万字深度好文!视觉-语言(VL)智能:任务、表征学习和大型模型
  2. html5 自动生成迷宫,HTML5 Canvas随机迷宫生成动画
  3. 查看当前系统的glibc版本
  4. 避免jQuery名字冲突--noConflict()方法
  5. 纯CSS3浮雕质感的立体文字旋转动画
  6. eclipse下载哪个版本开发java_官网上有很多版本的eclipse,下载哪个版本比较合适?...
  7. 机器学习、数据挖掘、神经网络、人工智能和模式识别之间,主要是什么关系
  8. 毕业两年做到测试经理的经历总结【转】
  9. javascript函数总结
  10. Contour Features 边界特征
  11. 【杂记】Directx11 Font
  12. JDO是什么意思?JDO使用实例
  13. 【来袭】iTOP-3568开发板Android11系统移植视频教程
  14. Java Web前端到后台常用框架介绍
  15. cmd实现快速粘贴复制
  16. 编程求解机械迷城第11关中类青蛙过河的问题
  17. 树莓派魔镜MagicMirror —— 1 前期准备工作
  18. upnp以及ssdp服务
  19. [语言]推荐个现代英文小说下载地址
  20. 针对秒杀项目做的一些优化

热门文章

  1. linux查找某时间段文件夹,shell查找指定时间段内的文件
  2. requests+re-爬取豆瓣电影top250,看看都有哪些电影上榜
  3. Dese:将 JSON API 中图片作为 Windows wallpaper
  4. IntelliJ IDEA Default Keymap
  5. 手把手教你搭建java接口自动化测试框架(四):断言、生成测试报告
  6. C语言 几点几分了?
  7. SigMesh学习笔记
  8. 如何学习织梦二次开发,怎样进行dedecms二次开发
  9. 使用Visual Studio编写计算器
  10. Spring function util —— SingletonSupplier SupplierUtils