нет способа установитьProgressDrawable на RemoteViews

Я пытаюсь вызвать setProgressDrawable для ProgressBar в своем RemoteViews
Однако, похоже, что для RemoveViews нет метода setDrawable(<view_id>,<method>,<value>). Я пробовал setBitmap, но setProgressDrawable принимает Drawable, а не Bitmap, и setInt тоже не работает .

Я хотел избежать множества разных XML-файлов макета виджета только для обработки индикаторов выполнения разных цветов.


person Rob    schedule 23.10.2011    source источник
comment
Я согласен. Похоже, SDK позволяет создавать экземпляр указателя на ProgressBar с помощью LayoutInflator, но никаких действий не происходит. Ни setProgressDrawable(), ни BringToFront(), ни печально известный обходной путь setProgress-and-setMax-twice не имеют значения, если ProgressBar является компонентом AppWidget. Он действует так, как будто существует разрыв между XML макета и указателем объекта в коде.   -  person Hunter D    schedule 30.11.2011
comment
@HunterD, по крайней мере, это не только у меня, проблема все еще существует и в ICS :(   -  person Rob    schedule 30.11.2011
comment
Мне удалось изменить цвет оттенка с помощью API отражения, см. здесь stackoverflow.com/a/53930384/4288054   -  person Oleksandr Albul    schedule 26.12.2018


Ответы (1)


Это невозможно сделать. Мое решение состояло не в том, чтобы создавать отдельные файлы макета, а в том, который содержит все разные ProgressBars с разными progressDrawables. Затем в коде вам нужно сделать видимым только один из них.

Обратите внимание, что для более старых версий Android нельзя напрямую вызывать setViewVisibility на индикаторе выполнения. Хитрость заключается в том, чтобы обернуть простой LinearLayout вокруг каждой панели и вместо этого сделать эту оболочку невидимой/видимой. У меня работает нормально.

person mdiener    schedule 19.12.2012