ако фонът на бутон е зададен на shape drawable
, можем програмно чрез извикване на (GradientDrawable) findDrawableByd(R.drawable.some_shape).setColor(someColor);
.
Ако е зададено на layer-list drawable
, можем да постигнем промяна на цвета му чрез извикване
LayerDrawable someLayerList = (LayerDrawable) getResources().getDrawable(R.drawable.someLayerList);
((GradientDrawable) someLayerList.findDrawableByLayerId(R.id.someShape)).setColor(someColor);
Искам да отида едно ниво по-дълбоко. Как мога програмно да задам цвета на чертаема форма, която се намира в списък със слоеве, който се намира в селектор?
Използването на кодовия фрагмент по-горе донякъде работи. Всъщност изглежда много бъги. Имам множество настроени диалогови фрагменти, които променят цвета на бутона последователно. Докато първият диалогов фрагмент винаги е оцветен правилно, останалите обикновено не са. Искам да подчертая, че когато фонът на бутона е настроен на списъка със слоеве, всичко работи перфектно, ако е настроен на селектора, става малко бъгово.