Android - Textview在改变状态时改变颜色

时间:2010-12-02 14:46:50

标签: android textview

如何在TextView的各种状态(聚焦,按下,启用)上应用颜色?

我已经提到了这个:http://developer.android.com/reference/android/content/res/ColorStateList.html,但不知道如何将颜色状态列表应用到TextView?或者还有其他方法吗?

更新

我想更改背景颜色。

5 个答案:

答案 0 :(得分:34)

在res / color目录下创建xml。

示例文件名:selector_white_gray.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="@color/Gray"/> <!-- pressed -->
    <item android:color="@color/White"/> <!-- default -->
</selector>

您可以添加更多状态。您可以使用“#ffffff”等颜色代码而不是预定义的“@ color / White”。 Becarefull,使用android:color not android:drawable。此示例在按下文本时更改文本的颜色。将textColor属性设置为上面的选择器。

<TextView
       android:layout_width="wrap_content"
       android:layout_weight="1"
       android:layout_height="wrap_content"
       android:textColor="@color/selector_white_gray"
       android:textSize="18sp" 
       android:textStyle="bold" >
</TextView>

答案 1 :(得分:15)

创建一个新的xml(在drawable文件夹中)。使用颜色,您可以为每个event state指定图像 你可以将这个xml设置为背景

如果您的xml为“res/drawable/abc.xml”,则将背景设置为

android:background="@drawable/abc"

编辑在状态xml中添加颜色
我们的xml,res/drawable/abc.xml

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

然后在your res\values\strings.xml

中声明灰色
<color name="gray">#808080</color>

答案 2 :(得分:0)

如果要更改文本的颜色 - 在res / color文件夹中将其创建为xml(例如res / color / mycolor.xml 然后在TextView中将颜色指定为android:textColor="@color/mycolor"

如需更改背景,请参阅其他答案。

答案 3 :(得分:0)

这很容易。只需拦截所需的事件并写下如:

TextView textView=(TextView)findViewById(R.id.myText);
String s=getString(R.string.myText);
SpannableString ss=new SpannableString(s);
ss.setSpan(new ForegroundColorSpan(Color.RED), 0, s.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
textView.setText(ss);

答案 4 :(得分:0)

if [ 1 -ne $(/bin/fuser "$0" 2>/dev/null | wc -w) ]; then
    exit 1
fi