Change clickable TextView's color on focus and click?
If you want to set stateful color from code, you need to pass in ColorStateList
as an argument to setTextColor
passing an int to the method results in setting the color to all the states. It also looks like your xml is not totally correct. Example from ColorStateList
docs looks like(should be located like this: res/color/selector_txt.xml
):
<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 on how to set a ColorStateList
to text color:
ColorStateList cl = null;
try {
XmlResourceParser xpp = getResources().getXml(R.color.selector_txt);
cl = ColorStateList.createFromXml(getResources(), xpp);
} catch (Exception e) {}
Note: The method createFromXml(Resources, XmlPullParser parser)
was deprecated in API level 23.
Use createFromXml(Resources, XmlPullParser parser, Theme)
With XML its as easy as:
android:textColor="@color/selector_txt"
Step 1: Set the text color in xml like this
android:textColor="@color/text_color"
Step2: Create res/color/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>
Try this one.. It worked for me:
File name: 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>
Try setting the color in xml layout as:
android:textColor="@color/bg_tab_text_color"