В палитре цветов у меня есть 3 SeekBars для Оттенка, Насыщенности и Значения. Вызов setProgressDrawable на этих SeekBars только работает однажды - при инициализации от onCreate. Когда пользователь обновляет Оттенок SeekBar, я хочу назвать setProgressDrawable для Насыщенности и Значения SeekBars, показать пользователю их выборы цветов для нового Оттенка.
Но все вызовы к setProgressDrawable (после того, как начальные от onCreate
) заставьте SeekBar быть очищенным.
Как я могу обновить градиент фона своего SeekBars, основанного на вводе данных пользователем?
Эй, я нашел решение этой проблемы, сначала вы должны установить drawable на ProgressBar, вызвав setProgresssDrawable(drawable) и только потом установить значение, а не наоборот. Это сработает.
Чтобы установить progress drawable:
Используйте drawable xml файл, подобный этому:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape>
<corners android:radius="5dip" />
<gradient android:startColor="#00CCCC"
android:centerColor="#00CCCC" android:centerY="0.75"
android:endColor="#00CCCC" android:angle="270" />
</shape>
</item>
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<corners android:radius="5dip" />
<gradient android:startColor="#00CCCC"
android:centerColor="#00CCCC" android:centerY="0.75"
android:endColor="#00CCCC" android:angle="270" />
</shape>
</clip>
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<corners android:radius="5dip" />
<gradient android:startColor="#00CCCC" android:centerColor="#00CCCC"
android:centerY="0.75" android:endColor="#00CCCC" android:angle="270" />
</shape>
</clip>
</item>
сохраните его в папке /drawable и используйте в функции setProgressDrawable(drawable)