Eu configurei Horizontal ProgressBar
.
Gostaria de mudar a cor do progresso para amarelo.
<ProgressBar
android:id="@+id/progressbar"
android:layout_width="80dip"
android:layout_height="20dip"
android:focusable="false"
style="?android:attr/progressBarStyleHorizontal" />
O problema é que a cor do progresso é diferente em diferentes dispositivos. Então, quero corrigir a cor do progresso.
android
android-progressbar
Nishant Shah
fonte
fonte
Respostas:
Copiei isso de um dos meus aplicativos, então há alguns atributos extras, mas você deve ter uma idéia. Isto é do layout que possui a barra de progresso:
Em seguida, crie um novo drawable com algo semelhante ao seguinte (neste caso
greenprogress.xml
):Você pode alterar as cores conforme necessário, isso fornecerá uma barra de progresso verde.
fonte
android:id="@android:id/progress"
,android:id="@android:id/background"
eandroid:id="@android:id/secondaryProgress"
repousar.Uma solução mais simples:
progess_drawable_blue
fonte
Basta criar um estilo no
values/styles.xml
.Em seguida, defina esse estilo como seu
ProgressBar
tema.e não importa que sua barra de progresso seja horizontal ou circular. Isso é tudo.
fonte
Se você deseja alterar apenas a cor da barra de progresso, basta usar um filtro de cores no método onCreate () da sua atividade:
Idéia daqui .
Você só precisa fazer isso nas versões pré-pirulito. No Lollipop, você pode usar o atributo de estilo colorAccent.
fonte
SeekBar
que é o mesmo, basta adicionar a API 16:seekBar.getThumb().setColorFilter(color, PorterDuff.Mode.SRC_IN);
. Isso mudará a cor do polegar redondo.setColorFilter()
um drawable diretamente aplicará a cor em qualquer lugar. Como isso é o que eu não precisava, eu apenas ligueimutate()
noDrawable
(ou seja,seekBar.getThumb().mutate().setColorFilter(color, PorterDuff.Mode.SRC_IN);
para o nível 21 ou superior da API, basta usar
fonte
Existem 3 maneiras de resolver esta questão:
Em particular, há muita confusão em torno de # 2 e # 3, como visto nos comentários à resposta de amfcosta. Essa resposta produzirá resultados imprevisíveis de cores sempre que você desejar definir a barra de progresso para qualquer coisa, exceto cores primárias, pois apenas modifica a cor do plano de fundo, e a área "clipe" da barra de progresso real ainda será uma sobreposição amarela com opacidade reduzida. Por exemplo, usar esse método para definir o plano de fundo como roxo escuro resultará em uma barra de progresso com uma cor rosada louca resultante da mistura de roxo escuro e amarelo via alfa reduzido.
De qualquer forma, o nº 1 é respondido perfeitamente por Ryan e Štarke responde a maior parte do nº 3, mas para quem procura uma solução completa para os nºs 2 e 3:
Como ajustar a cor da barra de progresso programaticamente, mas escolha a cor de uma cor predeterminada declarada em XML
res / drawable / my_progressbar.xml :
Crie esse arquivo, mas altere as cores em my_progress e my_secondsProgress:
(NOTA: Esta é apenas uma cópia do arquivo XML real que define o SDK Android ProgressBar padrão do Android, mas alterei os IDs e as cores. O original é chamado progress_horizontal)
No seu Java :
Como ajustar a cor da barra de progresso por meio de programação e também criar a cor por meio de programação
EDIT: Encontrei tempo para resolver isso corretamente. Minha resposta anterior deixou isso um pouco ambíguo.
Um ProgressBar é composto como 3 Drawables em um LayerDrawable.
No exemplo abaixo, alterarei a cor da barra de progresso principal para ciano.
Esse exemplo definiu uma cor sólida. Você pode configurá-lo para uma cor gradiente substituindo
com
Felicidades.
-Lança
fonte
ViewUtils
com uma referência aContext
, de modo que eu não preciso passar umContext
ao chamarconvertDpToPixel()
Se você estiver no nível 21 ou superior da API, poderá usar estes atributos XML:
fonte
A solução mais simples que descobri é algo como isto:
Coloque o
styles.xml
arquivo acima nares > values
pasta.NOTA: Se você usar qualquer outra cor de destaque, as soluções anteriores devem ser boas.
API 21 ou MAIS ALTA
fonte
fonte
Para quem procura como fazê-lo programaticamente:
Definir ids para drawables é crucial e cuida da preservação dos limites e da barra de estado real do progresso
fonte
Vocês estão realmente me dando dor de cabeça. O que você pode fazer é tornar sua lista de camadas desenhável via xml primeiro (significando um plano de fundo como a primeira camada, um desenhável que representa o progresso secundário como a segunda camada e outro desenhável que representa o progresso primário como a última camada) e depois altere a cor no código, fazendo o seguinte:
Esse método oferece a melhor flexibilidade de declarar a medição do seu drawable original no xml, SEM MODIFICAÇÃO NA ESTRUTURA APÓS A ESTRUTURA, especialmente se você precisar ter a pasta da tela de arquivo xml específica e modificar apenas ONLY THE COLOR via código. Não é necessário re-instanciar um novo ShapeDrawable do zero.
fonte
A cor ProgressBar pode ser alterada da seguinte maneira:
/res/values/colors.xml
/res/values/styles.xml
onCreate:
fonte
Crie um recurso drawable de que plano de fundo você precisa, no meu caso, chamei-o de bg_custom_progressbar.xml
Em seguida, use esse plano de fundo personalizado como
Funciona bem para mim
fonte
Em xml:
ViewModel:
fonte
Com a Biblioteca de componentes de material, você pode usar
ProgressIndicator
oapp:indicatorColor
atributo com para alterar a cor:Nota : requer pelo menos a versão
1.3.0-alpha01
.Com o
ProgressBar
você pode substituir a cor usando:com:
fonte
Se você deseja definir a cor do progresso primário e secundário para a barra de progresso horizontal programaticamente no android, use o snippet abaixo
fonte