转 Android学习 之 ColorStateList按钮文字变色

时间:2022-09-23 19:01:21

转 Android学习 之 ColorStateList按钮文字变色

Windows平台VC,对于不同的按钮状态,采用不同的颜色显示文字,实现起来比较复杂,一般都得自绘按钮。但是Android里面实现起来非常方便。

我们首先添加一个ColorStateList资源XML文件,XML文件保存在res/color/button_text.xml:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <selector xmlns:android="http://schemas.android.com/apk/res/android">
  3. <item android:state_pressed="true"
  4. android:color="#ffff0000"/> <!-- pressed -->
  5. <item android:state_focused="true"
  6. android:color="#ff0000ff"/> <!-- focused -->
  7. <item android:color="#ff000000"/> <!-- default -->
  8. </selector>
  1. Button btn=(Button)findViewById(R.id.btn);
  2. Resources resource=(Resources)getBaseContext().getResources();
  3. ColorStateList csl=(ColorStateList)resource.getColorStateList(R.color.button_text);
  4. if(csl!=null){
  5. btn.setTextColor(color_state_list);//设置按钮文字颜色
  6. }

或者可以这样:

  1. XmlResourceParser xpp=Resources.getSystem().getXml(R.color.button_text);
  2. try {
  3. ColorStateList csl= ColorStateList.createFromXml(getResources(),xpp);
  4. btn.setTextColor(csl);
  5. } catch (Exception e) {
  6. // TODO: handle exception
  7. }

最后附上所有可能出现的状态:

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <selector xmlns:android="http://schemas.android.com/apk/res/android" >
    3. <item
    4. android:color="hex_color"
    5. android:state_pressed=["true" | "false"]
    6. android:state_focused=["true" | "false"]
    7. android:state_selected=["true" | "false"]
    8. android:state_active=["true" | "false"]
    9. android:state_checkable=["true" | "false"]
    10. android:state_checked=["true" | "false"]
    11. android:state_enabled=["true" | "false"]
    12. android:state_window_focused=["true" | "false"] />
    13. </selector>

转 Android学习 之 ColorStateList按钮文字变色的更多相关文章

  1. Android学习 之 ColorStateList按钮文字变色

    首先添加一个ColorStateList资源XML文件,XML文件保存在res/color/button_text.xml: <?xml version="1.0" enco ...

  2. Android TextView 中实现部分文字变色以及点击事件

    首先要想实现文字变色以及点击,都需要使用到SpannableStringBuilder,实例化该类也很简单,只需将你想要处理的字符串当做参数 SpannableStringBuilder spanna ...

  3. Android学习起步 - Button按钮及事件处理

    按钮和文本框算是比较简单的控件了,以下主要讲按钮的事件响应,三种写法(匿名内部类响应事件.外部类响应事件.本类直接响应事件) 点击按钮后文本框中会显示 ”按钮被单击了”,先看效果: 以下是这个界面的布 ...

  4. Android学习笔记-Button&lpar;按钮&rpar;

    Button是TextView的子类,所以TextView上很多属性也可以应用到Button 上!我们实际开发中对于Button的,无非是对按钮的几个状态做相应的操作,比如:按钮按下的时候 用一种颜色 ...

  5. Android学习之Button按钮在程序运行时全部变大写的处理

    问题: 在layout布局文件中,我们命名的按钮名称是“button1”,程序运行过后,在app上显示出来的是“BUTTON1”,先看源代码和效果: 按钮源代码: 运行效果: 解决办法: 方法一: 在 ...

  6. Android 学习笔记二 自定义按钮形状 颜色 点击渐变

    问题:自定义按钮的颜色 形状弧度  渐变效果 1.新建自定义属性button_login.xml (借鉴某大神) <?xml version="1.0" encoding=& ...

  7. Ionic3学习笔记(四)修改返回按钮文字、颜色

    本文为原创文章,转载请标明出处 目录 修改返回按钮文字 修改返回按钮颜色 1. 修改返回按钮文字 参考官网 Ionic API---Config 文档 可在 ./src/app/app.module. ...

  8. Android – 学习操作NFC – 2

    在<Android – 学习操作NFC – 1>说明了Android在处理NFC tag的机制.tag dispatch system的运作流程,以及三种ACTION_NDEF_DISCO ...

  9. Android学习笔记⑤——UI组件的学习TextView相关

    TextView是一个强大的视图组件,直接继承了View,同时也派生出了很多子类,TextView其作用说白了就是在布局中显示文本,有点像Swing编程中的JLabel标签,但是他比JLabel强大的 ...

随机推荐

  1. workerman 的属性

    <?php /** * Created by PhpStorm. * User: zeopean * Date: 2016-08-26 * Time: 16:35 */ use Workerma ...

  2. OpenStack 的NAT解决办法

    原因 iptables中的nat表会对数据进行封包换目标,源地址,在我们的系统中是不需要的.所以我们做了如下操作 操作 /etc/nova/nova.conf的 1 2 #routing_source ...

  3. java中判断从数据库中取出的字段是否为空

    方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低.1:if(s == null || s.equals(""));方法二: 比较字符串长度, 效率高, 是我知道的最好一 ...

  4. uvalive 4992 Jungle Outpost

    题意:一个凸边型,目标在凸边型内且最优.问最多删除几个点使目标暴露在新凸边型外面. 思路:二分+半平面相交. #include<cstdio> #include<cmath> ...

  5. Codevs&lowbar;1040&lowbar;&lbrack;NOIP2001&rsqb;&lowbar;统计单词个数&lowbar;&lpar;划分型动态规划&rpar;

    描述 http://codevs.cn/problem/1040/ 与Codevs_1017_乘积最大很像,都是划分型dp. 给出一个字符串和几个单词,要求将字符串划分成k段,在每一段中求共有多少单词 ...

  6. POJ 2386 Lake Counting (简单深搜)

    Description Due to recent rains, water has pooled in various places in Farmer John's field, which is ...

  7. Java笔记(十五) 并发包

    并发包 Java中还有一套并发工具包,位于包java.util.concurrent下,里面包括很多易用 且很多高性能的并发开发工具. 一.原子变量和CAS 为什么需要原子变量,因为对于例如count ...

  8. 8&period;5 C&plus;&plus;输入相关的成员函数

    参考:http://www.weixueyuan.net/view/6411.html 总结: 输入相关的常用的类成员函数. 1) get函数有三种重载形式:不带参数.带一个参数和带有三个参数. 不带 ...

  9. 软工个人博客作业Week 1

    问题1:在瀑布模型中提到模型,模型(模拟版本)和原型有什么不同,如果与原型有同样的功能,那为什么称之为模型?如果没有同样的功能,又是怎么测试那些程序的? 问题2:怎样才能高效率的广泛而深入地了解用户的 ...

  10. 矩形嵌套&lpar;dp&rpar;

    矩形嵌套 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a& ...