Android - How combining Shape drwable and text color different states for button?
19,070
selector for the button BG:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape>
<gradient
android:startColor="@color/white"
android:endColor="@color/light_gray"
android:angle="270" />
<stroke
android:width="3dp"
android:color="@color/classic_red1" />
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item android:state_focused="true">
<shape>
<solid android:color="#424242" /> //another custom shape here for focus state
</shape>
</item>
<item>
<shape>
<gradient
android:startColor="@color/classic_red1"
android:endColor="@color/classic_red2"
android:angle="270" />
<stroke
android:width="2dp"
android:color="@color/white" />
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
selector for the button text color:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="@color/white" /> <!-- pressed -->
<item android:color="@color/black" /> <!-- default/unchecked -->
</selector>
Related videos on Youtube
Author by
Joe Aspara
Updated on June 04, 2022Comments
-
Joe Aspara almost 2 years
I have some troubles managing Android State List for a button. I specified some Shape drwable item for different states, but i also need to change textColor depending on the current state.
My actual state list xml is:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"> <shape> <gradient android:startColor="@color/white" android:endColor="@color/light_gray" android:angle="270" /> <stroke android:width="3dp" android:color="@color/classic_red1" /> <corners android:radius="3dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> <item> <shape> <gradient android:startColor="@color/classic_red1" android:endColor="@color/classic_red2" android:angle="270" /> <stroke android:width="2dp" android:color="@color/white" /> <corners android:radius="3dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> </selector>
I need also to change textColor based on these 2 states. Thanks in advance.
-
Joe Aspara over 12 yearsAaargh!! What a fool.. I thought of having to put all in the background drawable resource. Many thanks!
-
jobwat over 9 yearsand the BG selector is a xml under the drawable directory, where the text color one is a xml under the color directory - see stackoverflow.com/questions/8743584/…