Change the color of a disabled button in android
Try this -
drawable/bg_button.xml :-
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/bg_button_focused" android:state_selected="true"/>
<item android:drawable="@drawable/bg_button_pressed" android:state_pressed="true"/>
<item android:drawable="@drawable/bg_button_disabled" android:state_enabled="false" />
<item android:drawable="@drawable/bg_button_normal"/>
</selector>
After this just set background on your button like this -
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_button"
android:text="Button"/>
You'll have to use a selector for different drawables in those states.
You can create a selector like this:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/your_enabled_drawable" android:state_enabled="true" />
<item android:drawable="@drawable/your_disabled_drawable" android:state_enabled="false" />
<!-- default state-->
<item android:drawable="@drawable/your_enabled_drawable" />
</selector>
Specify the color in selector for android:state_enabled="false" as drawable
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false">
<shape>
<solid android:color="#32ff09" />
</shape>
</item>
</selector>
And apply this drawable resource to background of button
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/drawble_name"
android:enabled="false"
android:text="Selector Applied Button" />
Another way to achieve this is to create a color selector.
Create a file
res/color/your_color.xml
which looks like
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/colorDisabledBackground" android:state_enabled="false" />
<item android:color="@color/colorEnabledBackground" />
</selector>
Then you may use it as a regular color
in a style:
<style name="YourStyle">
<item name="android:background">@color/your_color</item>
<item name="android:textColor">@android:color/black</item>
</style>
As well is in layouts, shapes or in code as etc.