Решено попробовать новый класс DrawableCompat
. Следуя инструкциям надежного источника, я вызываю:
Button b = (Button) findViewById(R.id.button);
Drawable d = b.getBackground();
d = DrawableCompat.wrap(d);
DrawableCompat.setTintList(d, getResources().getColorStateList(...));
Удивительно, но этот не работает: мой фон кнопки получает цвет, который я определяю для не нажатого, не сфокусированного состояния, но он не изменяется при нажатии/на фокусировке. p >
Мне удалось добиться совершенно другого результата,
Button b = (Button) findViewById(R.id.button);
AppCompatButton b2 = (AppCompatButton) b; //direct casting to AppCompatButton throws annoying warning
b2.setSupportBackgroundTintList(getResources().getColorStateList(...));
который работает и еще более компактен, но, тем не менее, я хотел использовать DrawableCompat
. Не могли бы вы рассказать мне, почему?