如何在选择时更改 TextView 文字颜色?

6

我的场景是当用户点击一个 TextView 文本时,它会从黑色变为红色。我已经尝试解决这个问题,但什么也没发生。这是我的努力:TextView

 <TextView
        android:id="@+id/text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:textSize="24sp"
        android:textColor="@color/text_selector"
        android:text="Shamima Sultana Shaumi"/>

文本选择器类是:

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

每当我点击TextView时,没有任何反应。我无法弄清楚我的问题出在哪里。

你想要在点击期间(也就是按下去的时候)改变颜色,还是想要在点击后改变文本的颜色? - Bartek Lipinski
将你的背景设置为那个可绘制对象,而不是你的文本颜色。 - zgc7009
@BartekLipinski 我想在点击后更改文本颜色。 - androidcodehunter
2个回答

10

选择器可以是这个:

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

然后使用此OnClickListener来为您的textView设置:

textView.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        boolean isSelectedAfterClick = !v.isSelected();
        v.setSelected(isSelectedAfterClick);

        if (isSelectedAfterClick){
            //do something
        } else {
            //do something
        }
    }
});

你可以使用state_activatedisActivatedsetActivated代替state_selectedisSelectedsetSelected


0

不过我希望在文本点击后通过XML选择器改变颜色。 - androidcodehunter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接