Intereting Posts
RETROFIT & AUTH COOKIE Ошибка. Редактирование инструментов сборки SDK (23.0.3) слишком мало для проекта «Приложение». Минимальное значение – 25.0.0 NfcAdapter.getDefaultAdapter (это) возвращает null в эмуляторе Почему возобновление активности в android вызывает BadTokenException? Устранение неполадок в новой библиотеке com.android.support:support-v4:24.2.0 Как создать уведомление с NotificationCompat.Builder? Gradle: Как исключить пакет javax.realtime из Jarc jar dependency (Определить несколько dex) Разница между getExternalFilesDir и getExternalStorageDirectory () Как обнаружить только собственный браузер для Android Нет необходимости регистрировать базовый класс активности в манифесте? Не удалось загрузить libGL.so на Android Как создать запрос PUT в библиотеке ION Оверлей экрана обнаружены блоки Android-разрешения Как получить имя друга, идентификатор, день рождения, местоположение и т. Д. Из API facebook в android? Игнорировать предупреждение орфографии в студии Android для определенных файлов

Android ProgressBar.setProgressDrawable работает только один раз?

В наборе цветов у меня есть 3 SeekBars для оттенка, насыщенности и значения. Вызов setProgressDrawable на этих SeekBars работает только один раз – при инициализации от onCreate. Когда пользователь обновляет Hue SeekBar, я хочу вызвать setProgressDrawable для Saturation и Value SeekBars, чтобы показать пользователю их цветовые решения для нового оттенка.

Но все вызовы setProgressDrawable (после первоначальных из onCreate ) заставляют SeekBar быть заглушены.

Как я могу обновить фоновый градиент моего SeekBars на основе ввода пользователем?

Solutions Collecting From Web of "Android ProgressBar.setProgressDrawable работает только один раз?"

Я выяснил, что drawable не знает, что это размер при вызове setprogressdrawable. Когда он изначально настроен, он знает, что это его размер. Это означает, что в поисковом баттоне установлен новый набор, но размер drawable равен 0, вы ничего не увидите.

Решение состоит в том, чтобы сначала получить границы текущего вытягиваемого, затем установить новый drawable и, наконец, снова установить границы:

 Rect bounds = mySeekBar.getProgressDrawable().getBounds(); mySeekBar.setProgressDrawable(newSeekBarBackground); mySeekBar.getProgressDrawable().setBounds(bounds); 

Эй, у меня есть решения для этого, сначала нужно установить drawable на ProgressBar, вызвав setProgresssDrawable (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)