Joseph Earl Joseph Earl - 3 months ago 34
Android Question

How do I change the tint of an ImageButton on focus/press

I have an

ImageButton
in my app and I need to change the tint of the image when the button is
pressed/focused
. I have the
ImageButton
set to get its
src
from an XML file which as follows:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- pressed -->
<item
android:state_pressed="true"
android:tint="@color/black"
android:drawable="@drawable/search"
/>

<!-- focused -->
<item
android:state_focused="true"
android:tint="@color/black"
android:drawable="@drawable/search"
/>

<!-- default -->
<item
android:tint="@null"
android:drawable="@drawable/search"
/>

</selector>


However the tint isn't applied when the
ImageButton
is pressed or focused - the image just displays as normal. The color black is defined as
#000000
as always. Any ideas?

Answer

You can change the tint, quite easily in code via:

ImageButton button = (ImageButton) this.findViewById(R.id.button_i_want_to_modify);
button.setColorFilter(Color.argb(255, 255, 255, 255)); // White Tint

Hope it helps.

JS