Android 使用代码设置selector 的图片或文字颜色
转自:http://www.jianshu.com/p/06703d56cab8
通常selector 都是在drawable/color文件夹中定义好,但有时候一些特殊需求需要我们动态通过代码去更改,这个时候就要用到StateListDrawable 和 ColorStateList 了,这两个分别是设置图片和颜色的类
1、对不同状态的控件设置不同的图片(StateListDrawable)
通常我们在设置不同状态下图片不同时是这么写的:比如checkBox
a、定义一个selector文件
<?xml version= "1.0" encoding="utf-8">
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_toolbar_huabuwan_selected" android:state_checked="true"/>
<item android:drawable="@drawable/ic_toolbar_huabuwan_normal" android:state_checked="false"/>
</selector>
b、然后设置给checkBox
<CheckBox
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:background="@drawable/selector_check"/>
这是在图标没有定死的情况下,如果图标是要动态替换则需要通过下面这种方式了
2、通过代码动态设置图标
/**
* 设置底部tab图标
* @paramradioButton控件
* @paramdrawableNormal常态时的图片
* @paramdrawableSelect选中时的图片
*/
public void setSelectorDrawable(CheckBox cbButton,Drawable drawableNormal,Drawable drawableSelect){
StateListDrawable drawable =newStateListDrawable();
//选中
drawable.addState(new int[]{android.R.attr.state_checked},drawableSelect);
//未选中
drawable.addState(new int[]{-android.R.attr.state_checked},drawableNormal);
cbButton.setBackgroundDrawable(drawable);
}
同理selector的颜色也是如此设置,设置颜色的类是ColorStateList
/**
* 设置底部tab文字颜色
* @paramradioButton控件
* @paramnormal正常时的颜色值
* @paramchecked选中时的颜色值
*/
public void setSelectorColor(RadioButton radioButton,intnormal,intchecked){
int[] colors =new int[] { normal, checked,normal};
int[][] states =new int[3][];
states[0] =new int[] { -android.R.attr.state_checked};
states[1] =new int[] { android.R.attr.state_checked};
states[2] =new int[] {};
ColorStateList colorStateList =newColorStateList(states,colors);
radioButton.setTextColor(colorStateList);
}
注意:-android.R.attr.state_checked 和 android.R.attr.state_checked 的区别在于 “-” 号代表值里的true 和 false ,有“-”为false 没有则为true
转载于:https://www.cnblogs.com/jinglecode/p/6909038.html
Android 使用代码设置selector 的图片或文字颜色相关推荐
- Android kotlin 代码设置短信指定SIM卡发送
Android kotlin 代码设置短信指定SIM卡发送 前言 逻辑 权限 获取全部手机卡信息 修改短信使用的卡 发送短信 完事 前言 在双卡双待,甚至多卡多待的Android设备中,实现调用自己想 ...
- Android仿微信朋友圈发图片和文字
Android仿微信朋友圈发图片和文字的一个开源项目,其在github上的项目主页是:https://github.com/zhangphil/FangWeiXinPengYouQuanFaTuPia ...
- android 图片绑定按钮,Android编程实现给Button添加图片和文字的方法
本文实例讲述了Android编程实现给Button添加图片和文字的方法.分享给大家供大家参考,具体如下: //为按钮添加图片和文字的方法 public Spanned getSpan(int id, ...
- 设置html里面图片和文字的位置
如何设置html里面图片和文字的位置 1.首先是图片 <style type="text/css">body{ background-image:url("s ...
- android RadioGroup中设置selector后出现多个别选中的RadioButton的解决办法
在一个RadioGroup组中假如有三个或者以上的RadioButton,当然你需要给这些RadioButton设置selector.设置其中的一个为默认选中状态(在xml中设置).当程序在手机上运行 ...
- android 后台代码设置动画
1.设置旋转动画 final RotateAnimation animation =new RotateAnimation(0f,360f,Animation.RELATIVE_TO_SELF, 0. ...
- android通过代码设置铃声_使用VS Code调试Android C_C++代码(无需Android源码)
需求分析 在开发 Android Native 程序时(仅 C/C++代码,无 APK 应用),之前在调试的过程中一直只是使用添加 LOG 的方式来定位程序的问题,而在 Linux 上开发平台程序时, ...
- android 自定义铃声 代码,Android通过代码设置铃声
对安卓手机进行铃声操作,设置默认铃声.删除当前默认铃声.更改铃声 以默认振铃为例子,通过代码设置手机铃声 设置默认振铃 // 将铃声的路径插入contentResolver,以数据库的形式插入 /** ...
- android中用代码设置edittext属性为密码,Android中EditText常用属性设置
EditText继承关系:View–>TextView–>EditText 常用属性如下:android:layout_gravity="center_vertical" ...
最新文章
- nlp 中文停用词数据集
- wxWidgets:wxWindowCreateEvent类用法
- 普及一下equals和==的区别的误区
- Swift之extension的使用
- 10、什么是WEB端
- MySQL 时间戳转换成秒
- maven私服Nexus3.2的使用
- STM32+DWM1000开发uwb测距系列教程之三:使用官方例程实现p2p双向 twr测距
- badboy使用手册
- [解决]Windows 8 丢失 MSVCR71.dll 或 MSVCP71.dll
- 总所周知,Github是一个读小说的网站!《Re0:从零开始的异世界生活》Web版
- MySQL--通过mysqladmin命令修改密码提示:single quotes were not trimmed line client(Windows)
- gluster分布式存储总结与实践
- Mac OSX 安装qemu
- thinkpad重装系统不引导_联想电脑重装win7系统后引导不了的原因是什么?
- 海外众筹:产品出海kickstarter海外众筹流程
- js(EcamaScript)
- ES6 语法糖(一)
- react基础 - 模块与组件 - 组件化开发
- matlab怎么定义矩阵函数,怎么在matlab定义一个函数,而这个函数输入值是矩阵,并且输出的值也是相应的矩阵?...
热门文章
- 计算机和学数制和码制,[文学]第二章 计算机中的数制和码制.ppt
- portal认证 php,如何用PHP制作OSSH 免费版华为Portal系统认证前端页面
- mysql添加数据不阻塞_主键表插入数据不提交,外键表插入数据被阻塞
- mysql三高讲解(二):2.2 B+树的B的意义
- oracle 数据为当前月 查询结果为累计到当前月的数据_Oracle里的执行计划——使用explain plan命令...
- php字符串如何比较大小写,PHP字符串函数strcmp(二进制安全比较字符串,区分大小写)...
- virtual box linux 安装增强功能,Linux 开发环境中为VirtualBox安装增强功能
- c++ 一个函数包括多个返回值判断_go语言学习笔记(10)-函数、包的使用
- sqlalchemy 聚合
- MySQL Window Function Descriptions