Как сделать постоянное изменение цвета текста в выбранном элементе TextView в Android?
Я хочу сделать постоянное изменение цвета при нажатии клавиши на TextView.
Вот мой селектор цвета находится в папке res/color.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:color="#a7524a"/>
<item android:state_focused="true" android:state_enabled="false" android:color="#a7524a"/>
<item android:state_pressed="true" android:color="#a7524a"/>
<item android:color="#595959"/>
</selector>
В TextView я называю это
android:textColor="@color/bright_text_dark_focused"
Работает нормально. Я хочу сделать изменение цвета постоянным, когда пользователь нажимает элемент TextView и отпускает. По умолчанию он переходит к цвету по умолчанию при выпуске.
Обновить:
Я изменил селектор цвета как
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:color="#a7524a"/>
<item android:state_pressed="true" android:color="#a7524a" />
<item android:color="#595959"/>
</selector>
Это работает как и раньше. я добавил
android:textIsSelectable = "true"
свойство в TextView. Тогда цвет фона на свойстве выделения исчезает. Но цвет текста становится постоянным, когда я нажимаю на элементы. Любая подсказка, почему это происходит? На самом деле у меня есть этот текстовый вид внутри списка. Свойство цвета фона взято из ListView.
2 ответа
android:state_activation должен решить вашу проблему:
<item android:state_activated="true" android:color="#fff"/>
Вы также можете установить это для вашего listView:
mListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
и когда элемент listView нажал на это:
mListView.setItemChecked(position, true);
Я думаю, что если вы добавили строку <item android:state_enabled="true" android:color="@color/bright_text_dark_focused"/>
затем включите TextView
на ощупь он бы остался. Это так, если вы никогда не отключите его.