更改焦点上可点击的TextView颜色并单击?
我有一个可点击的TextView,我想给一些颜色。但我不知道如何。下面是我的两个文件我的工作相关的代码片段:更改焦点上可点击的TextView颜色并单击?
TextView title = new TextView(this);
title.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
title.setTextColor(R.color.textcolor);
title.setText(titleLine);
title.setTypeface(null, Typeface.BOLD);
title.setClickable(true);
title.setId(idLine);
title.setFocusable(true);
title.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/* Irrelevant code */
}
});
这是我textcolor.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="#000000"/> <!-- pressed -->
<item android:state_focused="true"
android:color="#000000"/> <!-- focused -->
<item android:color="#000000"/> <!-- default -->
</selector>
当我键入使用的文字颜色文件title.setTextColor(R.color.textcolor);,textcolor只是变成灰色,不管我是否按下左右。这是奇怪的,因为我已经在所有颜色字段中编写了“#000000”。
但是,如果我删除setTextColor代码,获取textView浅灰色的颜色,当我按它时,它变成黑色。但那不是我想要的颜色。
那么,任何人都可以帮助我解决这个问题吗?
只是为了澄清:我希望能够为正常,按下和聚焦的文本指定颜色。
如果你想设置的代码状态的颜色,你需要在ColorStateList以作为参数传递给setTextColor传递一个int的方法导致颜色设置为所有状态。它也看起来像你的XML不完全正确。从ColorStateList文档实例样子(应位于这样的:res/color/selector_txt.xml
):如何设置一个ColorStateList文本颜色
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:color="@color/testcolor1"/>
<item android:state_pressed="true" android:state_enabled="false" android:color="@color/testcolor2" />
<item android:state_enabled="false" android:color="@color/testcolor3" />
<item android:color="@color/testcolor5"/>
</selector>
UPD:
ColorStateList cl = null;
try {
XmlResourceParser xpp = getResources().getXml(R.color.selector_txt);
cl = ColorStateList.createFromXml(getResources(), xpp);
} catch (Exception e) {}
随着XML的那么容易,因为:
android:textColor="@color/selector_txt"
我改变了我的XML文件到你的建议,我做了一些搜索我应该如何在setTextColor方法中发送一个ColorStateList。我发现这个有用的帖子:http://www.anddev.org/post27828.html#p27828所以现在它都正常工作。 :)但是,我需要在xml文档中稍微调整一下状态。 – 2011-03-21 07:35:32
@Daniel Jonsson我已将帖子中的代码添加到答案中,所以对其他人更容易。 – 2011-03-21 08:02:56
@Konstantin Burov:+1谢谢你,你的回答帮助我... – 2012-07-25 05:20:13
查看R.java类(它是自动生成的)。你有这样的事情:
public static final class color {
public static final int gray_transparent=0x7f050001;
}
因此,在你的代码行:
title.setTextColor(R.color.textcolor);
你没有设置从textcolor.xml值,但是从R.java(INT包含textcolor.xml地址)。设置颜色的有效方法是:
title.setTextColor(getResources().getColorStateList(R.color.textcolor));
第1步:设置在XML文本颜色像这样
机器人:文字颜色= “@颜色/ text_color”
第二步:创建RES /颜色/ text_color.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true"
android:color="#ffffffff"/> <!-- pressed -->
<item android:state_focused="true"
android:color="#ff0000ff"/> <!-- focused -->
<item android:color="#ff000000"/> <!--default -->
</selector>
根本不起作用 – AlwaysConfused 2017-04-22 00:49:35
@AlwaysConfused,为什么?什么是设备,操作系统版本? – CoolMind 2017-10-09 16:34:43
试试这个..它的工作对我来说:
文件名:res/color/bg_tab_text_color。XML
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false" android:state_selected="false" android:color="@color/tab_unselected_text_color"/>
<item android:state_pressed="true" android:color="@color/tab_selected_text_color"/>
<item android:state_pressed="false" android:state_selected="true" android:color="@color/tab_selected_text_color"/>
<item android:color="@color/tab_unselected_text_color"></item>
</selector>
尝试如设置颜色XML布局:
android:textColor="@color/bg_tab_text_color"
节省时间。运作良好。 – Ganesh 2014-04-25 05:58:16
这是非常easy.Try这一个。它为我工作:
文件名:RES /颜色/ bg_tab_text_color.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@color/blue" />
尝试作为设置颜色在XML布局:
android:textColor="@color/bg_tab_text_color"
在res /抽拉/ tab_textColor.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:color="#FFFFFF" />
<item android:state_pressed="true" android:color="#FFFFFF" />
<item android:color="#CCCCCC" />
</selector>
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/icon"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dp"
android:text="@string/tab_indicator_home"
android:textColor="@drawable/tab_textcolor"
android:textSize="10sp"
android:visibility="visible"
tools:ignore="SmallSp" />
在res /颜色/ text_selector.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/white"
android:state_selected="true"/>
<item android:color="#8020e0"/>
</selector>
布局:
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Word"
android:textColor="@color/text_selector"
android:textSize="12sp"/>
在代码:
textView.setSelected(false); // To deselect.
textView.setSelected(true);
对于人们通过搜索引用此页面上,请参阅我的回答如果你正在寻找使用的颜色,而不是'ColorStateList'。我的解决方案无需使用Java编写任何代码:) – 2013-02-11 19:54:06