我有一个可点击的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);这段代码时,文本颜色变为灰色,无论我是否按下它。这很奇怪,因为我在所有颜色字段中都写了"#000000"。但是如果我删除setTextColor代码,textView就会变成浅灰色,当我按下它时,它会变成黑色。但那不是我想要的颜色。
所以,有人可以帮助我解决这个问题吗?
只是为了澄清一下:我想能够指定文本在普通、按下和聚焦时的颜色。
ColorStateList
的解决方案,请参考我的答案。我的解决方案无需编写任何Java代码即可运行 :) - Mahendra Liya