Я использую горизонтальный индикатор выполнения в своем приложении для Android и хочу изменить его цвет выполнения (по умолчанию желтый). Как я могу сделать это с помощью code
(не XML)?
android
android-progressbar
WhiteTigerK
источник
источник
android:indeterminateTint="@android:color/white"
работает только на API> = 21Ответы:
Я сожалею, что это не ответ, но что движет требованием, устанавливающим это из кода? И
.setProgressDrawable
должен работать, если он определен правильноисточник
Для горизонтального ProgressBar вы можете использовать
ColorFilter
тоже, как это:Примечание. Это изменяет внешний вид всех индикаторов выполнения в вашем приложении. Чтобы изменить только один конкретный индикатор выполнения, сделайте это:
Если progressBar не определен, используйте
getIndeterminateDrawable()
вместоgetProgressDrawable()
.Начиная с Lollipop (API 21) вы можете установить оттенок прогресса:
источник
getIndeterminateDrawable
если вы используете неопределенный прогресс.Это не программно, но я думаю, что это может помочь многим людям в любом случае.
Я много пробовал, и самым эффективным способом было добавить эти строки в мой ProgressBar в файле .xml:
В итоге этот код сделал это для меня:
Это решение работает для API 21+
источник
Для моего неопределенного индикатора выполнения (счетчик) я просто установил цветной фильтр на рисование. Отлично работает и всего одна строчка.
Пример установки красного цвета:
источник
android.graphics.PorterDuff.Mode.MULTIPLY
наPorterDuff.Mode.SRC_IN
и вы получите точный шестнадцатеричный цвет.Это старый вопрос, но использование темы здесь не упоминается. Если ваша тема по умолчанию использует
AppCompat
, вашProgressBar
цвет будетcolorAccent
вы определили.Изменение
colorAccent
также изменит вашProgressBar
цвет, но изменения также отражаются в нескольких местах. Итак, если вы хотите другой цвет только для определенного,PregressBar
вы можете сделать это, применив тему к этомуProgressBar
:Расширьте тему по умолчанию и переопределите
colorAccent
И
ProgressBar
добавьтеandroid:theme
атрибут:Так это будет выглядеть примерно так:
Таким образом, вы просто меняете
colorAccent
для своего конкретногоProgressBar
.Примечание : использование
style
не будет работать. Вам нужно использоватьandroid:theme
только. Вы можете найти больше использования темы здесь: https://plus.google.com/u/0/+AndroidDevelopers/posts/JXHKyhsWHAHисточник
Все API
если использовать все API, просто создайте тему в стиле
style.xml
и использовать в процессе
Уровень API 21 и выше
если используется в API уровня 21 и выше, просто используйте этот код:
источник
Согласно некоторым предложениям, вы МОЖЕТЕ указать форму и клип-макет с цветом, а затем установить его. У меня это работает программно. Вот как я это делаю ..
Сначала убедитесь, что вы импортируете библиотеку drawable.
import android.graphics.drawable.*;
Затем используйте код, подобный приведенному ниже;
источник
progress.setLevel(2500)
у меня не работает и, видимо, по какой-то причине ваше редактирование не было принято. Спасибо. +1.Это сработало для меня:
источник
если неопределенный:
источник
Это работает для меня. Это также работает для более низкой версии тоже. Добавьте это к вашему syles.xml
И использовать это в XML
источник
parent="ThemeOverlay.AppCompat.Light"
В настоящее время в 2016 году я обнаружил, что некоторые устройства до Lollipop не соответствуют этим
colorAccent
настройкам, поэтому мое окончательное решение для всех API теперь следующее:Для получения бонусных баллов не используется устаревший код. Попробуй это!
источник
wrapDrawable.mutate()
сDrawableCompat.setTint(wrapDrawable.mutate(), ContextCompat.getColor(getContext(), android.R.color.holo_green_light));
.xml
настройки, а также, если что-то переопределяетProgressBar
цвет.Это то, что я сделал. Работал.
Индикатор:
progressdrawable.xml:
здесь используйте градиент, чтобы изменить цвет по своему усмотрению. And android: toDegrees = "X" увеличивает значение X, и индикатор выполнения вращается быстро. Уменьшить и вращать медленно. Настройте в соответствии с вашими потребностями.
образец:
источник
Нажмите на ту же проблему, работая над изменением внешнего вида индикатора выполнения по умолчанию. Вот еще немного информации, которая, надеюсь, поможет людям :)
a-z0-9_.
(т.е. без прописных букв!)R.drawable.filename
myProgressBar.setProgressDrawable(...)
, однако вам не нужно просто ссылаться на ваш пользовательский макет, так какR.drawable.filename
вам нужно получить его какDrawable
:источник
Вероятно, есть одна вещь, которая не упоминалась в этом ответе:
Если ваша тема наследуется
Theme.AppCompat
,ProgressBar
примет цвет, который вы определили как"colorAccent"
в вашей теме.Итак, используя ..
... автоматически подкрасит цвет ProgressBar
@color/custom_color
.источник
источник
Вы можете попытаться изменить свои стили, темы или использовать android: indeterminateTint = "@ color / yourColor" в любом месте, где вы хотите, но есть только один способ сделать это, будет работать на любой версии Android SKD:
Если ваш индикатор прогресса не является неопределенным, пожалуйста, используйте:
Если ваш индикатор прогресса не определен, пожалуйста, используйте:
Печально, что в Android такой беспорядок!
источник
ProgressBar
, но для определенного оно окрашивает всю шкалу цветом.Как я это сделал в горизонтальном ProgressBar:
источник
Самое простое решение, если вы хотите изменить цвет в XML-файле макета, используйте приведенный ниже код и используйте свойство indeterminateTint для нужного цвета.
источник
Это решение сработало для меня:
источник
Еще одна маленькая вещь, решение для темы работает, если вы наследуете базовую тему, поэтому для app compact ваша тема должна быть:
И затем установите это в теме индикатора выполнения
источник
Чтобы изменить горизонтальный цвет ProgressBar (в котлине):
Чтобы изменить неопределенный цвет ProgressBar:
И это, наконец, нормально подкрасить прогресс леденец на палочке
источник
Пользовательский стиль горизонтального индикатора выполнения:
Изменить цвет фона и прогресс горизонтального индикатора выполнения.
Примените его на индикатор выполнения, установив атрибут стиля, для пользовательских стилей материала и проверки пользовательского индикатора выполнения http://www.zoftino.com/android-progressbar-and-custom-progressbar-examples
источник
Написал, чтобы добавить информацию об ответе PaulieG , так как ateiob попросил меня кое-что объяснить ...
Я могу сказать, что существует (или, по крайней мере, было, во время написания, когда я смотрел на эту текущую версию исходного кода Android) ошибка / проблема / оптимизация в
ProgressBar
коде, которая игнорирует попытку установить прогресс в значение, которое он уже в.После вызова
ProgressBar.setProgressDrawable()
ваш индикатор выполнения будет пустым (потому что вы изменили рисованную часть).Это означает, что вам нужно установить прогресс и перерисовать его. Но если вы просто установите прогресс в сохраненное значение, это ничего не изменит.
Сначала необходимо установить значение 0, затем снова «старое» значение, и полоса будет перерисована.
Итак, подведем итог:
Ниже у меня есть метод, который делает это:
Что касается решения HappyEngineer, я думаю, что это был похожий обходной путь, чтобы вручную установить смещение «прогресса». В любом случае приведенный выше код должен работать на вас.
источник
Используйте android.support.v4.graphics.drawable.DrawableCompat :
источник
просто используйте:
источник
Для горизонтального стиля ProgressBar я использую:
Пример вызова будет:
Если вам не нужен «вторичный прогресс», просто установите value2 в значение1.
источник
Примените этот пользовательский стиль к индикатору выполнения.
@ drawable / progress.xml -
Используйте этот тип изображения для индикатора выполнения.
Для лучшего результата вы можете использовать несколько изображений прогресса. И, пожалуйста, не стесняйтесь использовать изображения, потому что сама платформа Android использует изображения для прогрессбара. Код извлекается из SDK :)
источник
Согласно Мухаммаду-адилу, предложенному для SDK ver 21 и выше
в XML работает для меня, достаточно просто.
источник
Вот код для изменения цвета ProgressBar программно.
источник
источник