Поскольку вы определили селектор как src для ImageButton, Android будет AFAIK просто возьмет рисование, потому что это то, что соответствует типу src. Таким образом, оттенок не будет использоваться.
Тем не менее, у меня была похожая проблема: я также пытался использовать селектор, подобный вашему, но для значения android: tint ImageButton вместо android: src. Конечно, я опустил значения оттенков, которые есть в вашем селекторе. Это также решит вашу проблему, потому что вы хотите использовать один и тот же объект рисования для всех состояний. Любопытно, что каждый раз я получаю NumberFormatException, заявляя, что система не смогла проанализировать 'res / color / tint_selector.xml' (который действительно является моим селектором) как целое число. Если быть точным, мой код выглядит так:
Это мой селектор, сохраненный в /res/color/tint_selector.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:color="#D3D3D3"/> <!-- pressed -->
<item android:color="#ff000000"/> <!-- default -->
</selector>
И это соответствующий ImageButton:
<ImageButton android:id="@+id/program_help"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/symbol"
android:tint="@color/tint_selector">
</ImageButton>
Может быть, это вам немного поможет, хотя в настоящее время это не работает.