Я установил горизонтальный ProgressBar
.
Я хотел бы изменить цвет прогресса на желтый.
<ProgressBar
android:id="@+id/progressbar"
android:layout_width="80dip"
android:layout_height="20dip"
android:focusable="false"
style="?android:attr/progressBarStyleHorizontal" />
Проблема в том, что цвет выполнения у разных устройств разный. Итак, я хочу, чтобы исправить цвет прогресса.
android
android-progressbar
Нишант Шах
источник
источник
Ответы:
Я скопировал это из одного из моих приложений, так что есть несколько дополнительных атрибутов, но они должны дать вам идею. Это из макета, который имеет индикатор выполнения:
Затем создайте новый объект рисования с чем-то похожим на следующее (в данном случае
greenprogress.xml
):Вы можете изменить цвета по мере необходимости, это даст вам зеленый индикатор выполнения.
источник
android:id="@android:id/progress"
,android:id="@android:id/background"
иandroid:id="@android:id/secondaryProgress"
поддержать.Более простое решение:
progess_drawable_blue
источник
Просто создайте стиль в
values/styles.xml
.Затем установите этот стиль в качестве
ProgressBar
темы.и не имеет значения, ваш индикатор прогресса является горизонтальным или круглым. Вот и все.
источник
Если вы хотите изменить только цвет индикатора выполнения, вы можете просто использовать цветной фильтр в методе onCreate () вашей деятельности:
Идея отсюда .
Вам нужно сделать это только для версий перед леденцом на палочке. В Lollipop вы можете использовать атрибут стиля colorAccent.
источник
SeekBar
это то же самое, просто добавьте к API 16:seekBar.getThumb().setColorFilter(color, PorterDuff.Mode.SRC_IN);
. Это изменит цвет этого круглого пальца.setColorFilter()
на рисование напрямую будет применять цвет везде. Поскольку это то , что мне не нужно, я просто позвонилmutate()
наDrawable
(то есть какseekBar.getThumb().mutate().setColorFilter(color, PorterDuff.Mode.SRC_IN);
для API уровня 21 или выше просто используйте
источник
Есть 3 способа решить этот вопрос:
В частности, существует много путаницы вокруг # 2 и # 3, как видно из комментариев к ответу amfcosta. Этот ответ даст непредсказуемые цветовые результаты в любое время, когда вы захотите установить индикатор выполнения на что угодно, кроме основных цветов, так как он только изменяет цвет фона, а фактическая область «клипа» индикатора выполнения все равно будет наложена желтым цветом с уменьшенной непрозрачностью. Например, использование этого метода для установки темно-фиолетового фона приведет к тому, что индикатор выполнения «обрезает» какой-то сумасшедший розоватый цвет в результате смешивания темно-фиолетового и желтого цветов с помощью уменьшенного альфа-канала.
Так или иначе, Райан отлично отвечает на вопрос № 1, а Штарке отвечает на большинство вопросов № 3, но для тех, кто ищет полное решение для № 2 и № 3:
Как программно настроить цвет индикатора выполнения, но выбрать цвет из предварительно определенного цвета, объявленного в XML
res / drawable / my_progressbar.xml :
Создайте этот файл, но измените цвета в my_progress и my_secondsProgress:
(ПРИМЕЧАНИЕ. Это просто копия фактического файла XML, определяющего SDK ProgressBar по умолчанию для Android, но я изменил идентификаторы и цвета. Оригинал называется progress_horizontal)
В вашей Java :
Как программно настроить цвет индикатора выполнения, а также создать цвет программно
РЕДАКТИРОВАТЬ: я нашел время, чтобы решить это правильно. Мой прежний ответ оставил это немного двусмысленным.
ProgressBar состоит из 3 Drawables в LayerDrawable.
В приведенном ниже примере я поменяю цвет основного индикатора на голубой.
Этот пример установил его на сплошной цвет. Вы можете установить его в градиентный цвет, заменив
с участием
Приветствия.
-Lance
источник
ViewUtils
Context
Context
convertDpToPixel()
Если вы находитесь на уровне API 21 или выше, вы можете использовать эти атрибуты XML:
источник
Самое простое решение, которое я обнаружил, выглядит примерно так:
Поместите выше в
styles.xml
файл вres > values
папке.ПРИМЕЧАНИЕ. Если вы используете какой-либо другой акцентный цвет, лучше использовать предыдущие решения.
API 21 или выше
источник
источник
Для тех, кто ищет, как это сделать программно:
Установка идентификаторов для drawables имеет решающее значение, и заботится о сохранении границ и фактического состояния индикатора выполнения
источник
Вы, ребята, действительно причиняете мне головную боль. Что вы можете сделать, это сделать свой список слоев пригодным для рисования через XML сначала (имеется в виду фон в качестве первого слоя, чертеж, представляющий вторичный прогресс в качестве второго слоя, и другой чертеж, представляющий основной прогресс в качестве последнего слоя), а затем изменить цвет на коде, выполнив следующее:
Этот метод даст вам максимальную гибкость, позволяя измерить исходный чертеж, объявленный в xml, БЕЗ МОДИФИКАЦИИ ПОСЛЕ ТОГО, КАК ЕГО СТРУКТУРА, особенно если вам нужна конкретная папка экрана xml, а затем просто измените ТОЛЬКО ЦВЕТ через код. Никакого повторного создания нового ShapeDrawable с нуля.
источник
Цвет ProgressBar можно изменить следующим образом:
/res/values/colors.xml
/res/values/styles.xml
OnCreate:
источник
Создайте нарисованный ресурс, какой фон вам нужен, в моем случае я назвал его bg_custom_progressbar.xml
Затем используйте этот пользовательский фон, как
Это прекрасно работает для меня
источник
В xml:
ViewModel:
источник
В библиотеке компонентов материалов вы можете использовать атрибут
ProgressIndicator
withapp:indicatorColor
для изменения цвета:Примечание : требуется как минимум версия
1.3.0-alpha01
.С помощью
ProgressBar
вы можете переопределить цвет используя:с участием:
источник
Если вы хотите программно установить основной и дополнительный цвет хода для горизонтального индикатора выполнения в Android, используйте фрагмент ниже
источник