Je n'arrive pas à comprendre comment changer la couleur de la barre de progression du cercle indéterminé sur API-21. Je me suis assuré que mon colorAccent est correctement défini. Ma compréhension est que le système devrait prendre de colorAccent et teinter la barre de progression en conséquence. Une idée de ce qui pourrait mal tourner?
app/src/main/res/layout-v21/fragment_story_comments.xml
<ProgressBar
Android:id="@+id/progress_bar"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_centerInParent="true"
Android:visibility="visible"/>
app/src/main/res/values / themes.xml
<style name="AppTheme.Base" parent="Theme.AppCompat.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="Android:windowNoTitle">true</item>
</style>
app/src/main/res/values / colours.xml
<color name="colorAccent">#ff5722</color>
<color name="colorPrimary">#ff5722</color>
<color name="colorPrimaryDark">#e64a19</color>
Remarque: cela ne fonctionne qu'à partir de Android 5.0 (Lollipop) et plus, conformément à la demande d'origine. Pour les anciennes versions Android Android), vous aurez pour remplacer le progressDrawable de ProgressBar.
En développant la réponse de Liam, j'ai réussi à faire fonctionner cela sur XML en utilisant l'indicateur indeterminateTint.
Apparemment, pour le faire fonctionner, vous devez définir les indicateurs indeterminate et indeterminateTintMode.
Le mode est un peu mystérieux pour moi. Je les ai tous essayés mais j'ai seulement obtenu les résultats attendus avec src_in et src_atop. Je ne sais pas ce que ces modes font réellement, donc si quelqu'un peut développer cela, je vous en serais reconnaissant.
Dans tous les cas, cela devrait fonctionner:
<ProgressBar
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:indeterminate="true"
Android:indeterminateTint="#F00"
Android:indeterminateTintMode="src_in" />
cela fonctionne aussi pour les versions inférieures d'Android:
if (progBar.getIndeterminateDrawable() != null) {
progBar.getIndeterminateDrawable().setColorFilter(getResources().getColor(R.color.accent), Android.graphics.PorterDuff.Mode.SRC_IN);
}
J'ai réussi à changer la couleur de la ProgressBar sur API 21 par programmation du vert au blanc comme ceci:
mProgressBar.getIndeterminateDrawable().setColorFilter(new LightingColorFilter(0xFF000000, 0xFFFFFF));
Cependant, je ne sais toujours pas comment le faire en XML, mais j'espère que cela aidera quelqu'un.
Vous devez définir une couleur pour les contrôles activés dans votre thème:
<item name="colorControlActivated">@color/accent</item>
Cela ne fonctionne que pour Android 5.0+