zoukankan      html  css  js  c++  java
  • Android学习 之 ColorStateList按钮文字变色

     

     

    API

     

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

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

    Java代码 
    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>  

     

    Java代码 
    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. }  

     

    或者可以这样:

     

     

    Java代码  收藏代码
    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. }  

     

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

    Java代码  收藏代码
    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>  
  • 相关阅读:
    noi 2011 noi嘉年华 动态规划
    最小乘积生成树
    noi 2009 二叉查找树 动态规划
    noi 2010 超级钢琴 划分树
    noi 2011 阿狸的打字机 AC自动机
    noi 2009 变换序列 贪心
    poj 3659 Cell Phone Network 动态规划
    noi 2010 航空管制 贪心
    IDEA14下配置SVN
    在SpringMVC框架下建立Web项目时web.xml到底该写些什么呢?
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/8981652.html
Copyright © 2011-2022 走看看