Цветные кнопки по умолчанию — цветной фильтр только в несфокусированном состоянии

Я хочу, чтобы кнопки были разных цветов, но я хочу сделать это, используя фоновый ресурс кнопки по умолчанию, чтобы сохранить состояния onfocus и onclick. Это связано с тем, что я хочу использовать цвет выделения ОС по умолчанию для своего приложения, который НЕ всегда оранжевый (HTC Sense делает его зеленым).

Я обнаружил, что добавление цветного фильтра к рисунку фона кнопки отлично работает (в данном случае синий):

myButton.getBackground().setColorFilter(Color.parseColor(this.getString (R.color.button_blue)), Mode.MULTIPLY);

НО, когда кнопка сфокусирована или нажата, она превращается в неприятный оранжевый_синий, потому что смешивает цветовой фильтр с оранжевым цветом фона.

Я хочу ТОЛЬКО установить этот цветовой фильтр для несфокусированного / ненажатого девяти патчей, которые можно рисовать в пределах кнопки statelistdrawable по умолчанию. Я не уверен, как еще это сделать.

Я вижу похожее решение здесь: Исправлено: Android: обнаружение фокуса/нажатого цвета...

но у меня есть некоторые опасения по поводу этого решения, в основном, что, если ОС изменит изображение кнопки по умолчанию? Поскольку обычная несфокусированная/непрессованная графика теперь жестко запрограммирована в приложении, это нарушит поток.

Может быть, кто-нибудь может прокомментировать, было бы хорошей или плохой практикой жестко закодировать графику по умолчанию в приложение? Каковы шансы, что ОС полностью изменит графику?

Любая помощь, пожалуйста? Большое спасибо!!


person rlo    schedule 03.02.2010    source источник
comment
Я пошел с этим решением, которое работало очень хорошо. stackoverflow.com/questions/1521640 /   -  person Rachel    schedule 23.07.2010