Android编程实现控件不同状态文字显示不同颜色的方法_Android

本文实例讲述了Android编程实现控件不同状态文字显示不同颜色的方法。分享给大家供大家参考,具体如下:

方式一

第一要选择的控件

<TextView
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:id="@+id/close_time_display"
   android:layout_marginRight="20dp"
   android:text="@string/default_time"
   style="@style/item_content_text_style"/>

style是自定义的风格,对应的xml文件如下:

<style name="item_content_text_style">
    <item name="android:textSize">26sp</item>
    <item name="android:duplicateParentState">true</item>
    <item name="android:textColor">@drawable/textcolor_yellow_selector</item>
</style>

textColor中的textcolor_yellow_selector如下

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

实现方式二:ColorStateList文字变色

API

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

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

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

或者可以这样:

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

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

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item
  android:color="hex_color"
  android:state_pressed=["true" | "false"]
  android:state_focused=["true" | "false"]
  android:state_selected=["true" | "false"]
  android:state_active=["true" | "false"]
  android:state_checkable=["true" | "false"]
  android:state_checked=["true" | "false"]
  android:state_enabled=["true" | "false"]
  android:state_window_focused=["true" | "false"] />
</selector>

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android多媒体操作技巧汇总(音频,视频,录音等)》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
, 控件
, 文字显示
, 不同颜色
不同状态
android 实现悬浮控件、android 控件选中状态、android 控件实现tint、机器人编程设计与实现、编程语言实现模式,以便于您获取更多的相关知识。

时间: 2024-09-05 08:22:01

Android编程实现控件不同状态文字显示不同颜色的方法_Android的相关文章

Android编程实现控件不同状态文字显示不同颜色的方法

本文实例讲述了Android编程实现控件不同状态文字显示不同颜色的方法.分享给大家供大家参考,具体如下: 方式一: 第一要选择的控件 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/close_time_display" android:layout_marginRight="20

Android编程布局控件之AbsoluteLayout用法实例分析_Android

本文实例讲述了Android编程布局控件之AbsoluteLayout用法.分享给大家供大家参考,具体如下: AbsoluteLayout是绝对布局管理器,指的是指定组件的左上角绝对坐标来指定组件的布局 <?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"

Android编程之控件可拖动的实现方法_Android

本文实例讲述了Android编程之控件可拖动的实现方法.分享给大家供大家参考,具体如下: 点击和触摸的区别是什么? 点击: 一组动作的集合 手指按下着按钮 手指要在按钮停留一段时间 手指离开按钮 private static final String TAG = "DragViewActivity"; private ImageView iv_dv_view; private TextView tv_drag_view; private int startx; private int

android中textview控件中的文字的位置是如何调整的

问题描述 android中textview控件中的文字的位置是如何调整的 android中textview控件中的文字的位置是如何调整的 像缩进 靠左 居中 这些概念有吗 解决方案 http://jingyan.baidu.com/article/c85b7a640641dc003aac9562.html 百度很多 解决方案二: 有,而且还有更多属性 解决方案三: 位置可以用android:gravity控制,比如: android:gravity="center" 缩进可以用andr

Android编程之控件ListView使用方法_Android

本文实例讲述了Android编程之控件ListView使用方法.分享给大家供大家参考.具体分析如下: 控件ListView是一个重要的控件,可以被用作用户列表等显示,下面进行它的操作测试. 下面代码实现了生成了一个ListView显示,并对每个条目的单击事件作出响应. 源代码: package com.list; import java.util.ArrayList; import java.util.HashMap; import android.app.Activity; import an

Android编程获取控件宽和高的方法总结分析_Android

本文总结分析了Android编程获取控件宽和高的方法.分享给大家供大家参考,具体如下: 我们都知道在onCreate()里面获取控件的高度是0,这是为什么呢?我们来看一下示例: 首先我们自己写一个控件,这个控件非常简单: public class MyImageView extends ImageView { public MyImageView(Context context, AttributeSet attrs) { super(context, attrs); } public MyIm

Android编程之控件可拖动的实现方法

本文实例讲述了Android编程之控件可拖动的实现方法.分享给大家供大家参考,具体如下: 点击和触摸的区别是什么? 点击: 一组动作的集合 手指按下着按钮 手指要在按钮停留一段时间 手指离开按钮 private static final String TAG = "DragViewActivity"; private ImageView iv_dv_view; private TextView tv_drag_view; private int startx; private int

Android编程布局控件之AbsoluteLayout用法实例分析

本文实例讲述了Android编程布局控件之AbsoluteLayout用法.分享给大家供大家参考,具体如下: AbsoluteLayout是绝对布局管理器,指的是指定组件的左上角绝对坐标来指定组件的布局 <?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"

Android中Spinner控件之键值对用法实例分析_Android

本文实例讲述了Android中Spinner控件之键值对用法.分享给大家供大家参考.具体如下: 一.字典表,用来存放键值对信息 package com.ljq.activity; import java.io.Serializable; @SuppressWarnings("serial") public class Dict implements Serializable { private Integer id; private String text; public Dict()