Android按钮设置文字变色ColorStateList

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>

转自:http://blog.csdn.net/ganlijianstyle/article/details/7593812

------------------------------------------------------------------------------------------------------------------------------------------

currentButton.setTextColor(R.color.white);

这种直接值颜色的ID进去,发现文字都变成黑色的了,所以需要使用setTextColor(ColorStateList colors)
这个方法,传入ColorStateList对象

ColorStateList
whiteColor=getResources().getColorStateList(R.color.white);

currentButton.setTextColor(whiteColor);

这样文字就可以变颜色了

ColorStateList对象可以在XML中定义,像color一样使用,它能根据它应用到的View对象的状态实时改变颜色。例如,Button可以存在多种状态(pressed、focused或other),如果使用ColorStateList,你就能为它的每个状态提供不同的颜色。

原文:http://blog.csdn.net/meizhen51/article/details/6303612

时间: 2024-10-09 11:52:14

Android按钮设置文字变色ColorStateList的相关文章

Android TextView 设置文字间距

搜索结果都不靠谱,基本上都说是android:textScaleX可以设置文字间距,也不知道你们到底有没有真正做过开发. Android开发文档里描述的很清楚: android:textScaleX Sets the horizontal scaling factor for the text. 这个东西是用来设置水平方向的文字放大和缩小的. 其实设置文字间距可以通过修改string.xml里的字符,在其中添加空格来实现. 但是在字符串中直接输入空格达不到想要的效果,这就需要使用转义字符来进行转

Android 按钮设置边框实例

以下一Button标签为例: 这里就联系到标签<shape>,设置背景样式.边框.渐变.圆角等,各种效果的使用方法见如下代码 drawable文件夹新建一个buttonstyle.xml,内容如下 1 <?xml version="1.0" encoding="utf-8"?> 2 <shape xmlns:android="http://schemas.android.com/apk/res/android">

android 按钮的文字显示不全

AbsoluteLayout.LayoutParams layoutparams = new AbsoluteLayout.LayoutParams((int) (datashow.nWidth * wr), (int) (datashow.nHeight * hr), (int) (datashow.nLp * wr), (int) (datashow.nTp * hr)); Button buttonView = new Button(this); buttonView.setPadding

开发第一个IOS小程序 - 点击按钮文字变色

1. 题目:实现点击按钮切换文字对应的颜色 2.分析大致的开发步骤是 •添加所需要的UI元素:3个按钮(UIButton).1个文本标签(UILabel) •监听3个按钮的点击事件 •改变文本标签的文字颜色 3.具体实现步骤 3.1 在storyboard文件中,拖拽相应控件器上,布局好以上显示页面效果 3.2 然后利用Xcode右端上的“圆圈”按钮,将代码区分割成 “Main.storyboard”与“viewController.m”文件,两个可以按住control键,不要放开,将以上元素拖

[转]UITextField常用属性归纳:文本框样式、文字样式、键盘样式、左右视图样式、清除按钮设置等

(1)可以根据需要设置文本框的样式(包括形状.边框颜色.背景等). (2)可以根据需要设置文字显示样式(包括输入密码时的密文显示.文字横向居中.纵向居中上下.输入的文字是否首席木大写.文字超过后是否缩小还是向右滚动等). (3)可以根据需要设置各种不同的键盘样式(只有数字.只有字母等等). (4)还有inputView可以弹出一个视图,用于取代弹出键盘,暂时不知道什么用处,但貌似可以用得地方很多啊. (5)还有return的样式设置,可以设置为Google也可以设置为Go和Search等更形象的

android按钮被点击文字颜色变化效果

有的时候做应用需要点击按钮时文字颜色也跟着变,松开后又还原,目前发现两种解决方案:第一用图片,如果出现的地方比较多,那么图片的量就相当可观:第二,也就是本文讲到的.废话少说,先贴图片,再上代码. 正常效果: 按下效果: 先在values目录创建color.xml文件,在里面加入以下自定义颜色(注意不是用color标签)的代码: <?xml version="1.0" encoding="utf-8"?> <resources> <dra

【iOS开发-15】UITextField常用属性归纳:文本框样式、文字样式、键盘样式、左右视图样式、清除按钮设置等

(1)可以根据需要设置文本框的样式(包括形状.边框颜色.背景等). (2)可以根据需要设置文字显示样式(包括输入密码时的密文显示.文字横向居中.纵向居中上下.输入的文字是否首席木大写.文字超过后是否缩小还是向右滚动等). (3)可以根据需要设置各种不同的键盘样式(只有数字.只有字母等等). (4)还有inputView可以弹出一个视图,用于取代弹出键盘,暂时不知道什么用处,但貌似可以用得地方很多啊. (5)还有return的样式设置,可以设置为Google也可以设置为Go和Search等更形象的

iOS 设置导航栏之二(设置导航栏的颜色、文字的颜色、左边按钮的文字及颜色)

                  #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @property (strong, nonatomic) UIWindow *window; @end #import "AppDelegate.h" #import "KeyViewController.h" @interface Ap

Android中设置半个屏幕大小且居中的按钮布局 (layout_weight属性)

先看如下布局 : 上图中,按钮的大小为屏幕的一半,然后居中显示在布局中央,每个人心中都有自己的答案,看看我的方法吧,布局布局xml如下 : <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/main_layout&