Frage

Ich bin mit einem horizontalen Fortschrittsbalken in meiner Android-Anwendung, und ich möchte zu ändern, seine Fortschritte Farbe (die Gelben Standard).Wie kann ich es tun mit code (nicht XML)?

War es hilfreich?

Lösung

Es tut mir leid, dass es nicht die Antwort ist, aber was die Forderung treibt es von Code-Einstellung? Und .setProgressDrawable sollte funktionieren, wenn es richtig definiert ist

<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="#ff9d9e9d"
                android:centerColor="#ff5a5d5a"
                android:centerY="0.75"
                android:endColor="#ff747674"
                android:angle="270"
        />
    </shape>
</item>

<item android:id="@android:id/secondaryProgress">
    <clip>
        <shape>
            <corners android:radius="5dip" />
            <gradient
                    android:startColor="#80ffd300"
                    android:centerColor="#80ffb600"
                    android:centerY="0.75"
                    android:endColor="#a0ffcb00"
                    android:angle="270"
            />
        </shape>
    </clip>
</item>

<item android:id="@android:id/progress">
    <clip>
        <shape>
            <corners
                android:radius="5dip" />
            <gradient
                android:startColor="@color/progress_start"
                android:endColor="@color/progress_end"
                android:angle="270" 
            />
        </shape>
    </clip>
</item>

</layer-list>

Andere Tipps

Für eine horizontale ProgressBar können Sie eine ColorFilter verwenden, auch, wie folgt aus:

progressBar.getProgressDrawable().setColorFilter(
    Color.RED, android.graphics.PorterDuff.Mode.SRC_IN);

 Red ProgressBar mit Farbfilter

Hinweis: Dies ändert das Aussehen aller Fortschrittsbalken in der App. Um nur eine bestimmte Fortschrittsbalken zu ändern, dies zu tun:

Drawable progressDrawable = progressBar.getProgressDrawable().mutate();
progressDrawable.setColorFilter(Color.RED, android.graphics.PorterDuff.Mode.SRC_IN);
progressBar.setProgressDrawable(progressDrawable);

Wenn progressBar unbestimmt, dann ist getIndeterminateDrawable() anstelle von getProgressDrawable().

Da Lollipop (API 21) eine Verlaufstönung festlegen:

progressBar.setProgressTintList(ColorStateList.valueOf(Color.RED));

 Red ProgressBar mit Fortschritt Tönung

Dies ist nicht programmatisch, aber ich denke, es ist auf jeden Fall eine Menge Leute helfen könnte.
Ich habe versucht, eine Menge und die effizienteste Art und Weise war diese Zeilen zu meinem ProgressBar in der XML-Datei hinzuzufügen:

            android:indeterminate="true"
            android:indeterminateTintMode="src_atop"
            android:indeterminateTint="@color/secondary"

Also am Ende dieser Code hat es für mich:

<ProgressBar
            android:id="@+id/progressBar"
            style="?android:attr/progressBarStyleLarge"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:layout_marginTop="50dp"
            android:layout_marginBottom="50dp"
            android:visibility="visible"
            android:indeterminate="true"
            android:indeterminateTintMode="src_atop"
            android:indeterminateTint="@color/secondary">

Diese Lösung funktioniert für API 21 +

Für meine unbestimmte progressbar (Spinner) Ich habe gerade einen Farbfilter auf dem ziehbar. Funktioniert prima und nur eine Zeile.

Beispiel, wo Einstellung Farbe auf Rot:

ProgressBar spinner = new android.widget.ProgressBar(
                context,
                null,
                android.R.attr.progressBarStyle);

spinner.getIndeterminateDrawable().setColorFilter(0xFFFF0000, android.graphics.PorterDuff.Mode.MULTIPLY);

eingeben Bild Beschreibung hier

Dies ist eine alte Frage, aber mit Thema ist hier nicht erwähnt. Wenn Ihr Standard-Theme verwendet AppCompat, Ihre ProgressBar die Farbe wird colorAccent Sie definiert haben.

Ändern colorAccent wird auch Ihre ProgressBar die Farbe ändern, aber es ändert spiegelt sich auch an mehreren Stellen. Also, wenn Sie eine andere Farbe wollen einfach nur für einen bestimmten PregressBar Sie können das tun, indem Thema zu diesem ProgressBar Anwendung:

  • Erweitern Sie Ihre Standard-Theme und außer Kraft setzen colorAccent

    <style name="AppTheme.WhiteAccent">
        <item name="colorAccent">@color/white</item> <!-- Whatever color you want-->
    </style>
    
  • Und in ProgressBar fügen Sie das android:theme Attribut:

    android:theme="@style/AppTheme.WhiteAccent"
    

So ist es so etwas wie folgt aussehen:

<ProgressBar
        android:id="@+id/loading"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:padding="10dp"
        android:theme="@style/AppTheme.WhiteAccent" />

Sie sind also nur eine colorAccent für Ihre ProgressBar ändern.

Hinweis : style Verwendung wird nicht funktionieren. Sie müssen nur android:theme verwenden. Sie können mehr Verwendung Thema finden Sie hier: https://plus.google.com/u/0/ + AndroidDevelopers / posts / JXHKyhsWHAH

Alle API

, wenn die Verwendung alle API erstellen, das Thema in der Art

style.xml

<resources>

    //...

    <style name="progressBarBlue" parent="@style/Theme.AppCompat">
        <item name="colorAccent">@color/blue</item>
    </style>

</resources>

und verwenden im Gang

<ProgressBar
    ...
    android:theme="@style/progressBarBlue" />

API-Level 21 und höher

Wenn in API-Ebene verwendet 21 und höher nur diesen Code verwenden:

<ProgressBar
   //...
   android:indeterminate="true"
   android:indeterminateTintMode="src_atop"
   android:indeterminateTint="@color/secondary"/>

als pro einige der Vorschläge, können Sie eine Form und clipdrawable mit einer Farbe spezifizieren, stellen Sie es dann. Ich habe diese programmatisch zu arbeiten. Dies ist, wie ich es tun ..

Zuerst stellen Sie sicher, die ziehbar Bibliothek importieren ..

import android.graphics.drawable.*;

Verwenden Sie dann den Code wie unten;

ProgressBar pg = (ProgressBar)row.findViewById(R.id.progress);
final float[] roundedCorners = new float[] { 5, 5, 5, 5, 5, 5, 5, 5 };
pgDrawable = new ShapeDrawable(new RoundRectShape(roundedCorners, null,null));
String MyColor = "#FF00FF";
pgDrawable.getPaint().setColor(Color.parseColor(MyColor));
ClipDrawable progress = new ClipDrawable(pgDrawable, Gravity.LEFT, ClipDrawable.HORIZONTAL);
pg.setProgressDrawable(progress);   
pg.setBackgroundDrawable(getResources().getDrawable(android.R.drawable.progress_horizontal));
pg.setProgress(45);

Das funktioniert für mich:

<ProgressBar
 android:indeterminateTint="#d60909"
 ... />

Wenn Indeterminate:

((ProgressBar)findViewById(R.id.progressBar))
    .getIndeterminateDrawable()
    .setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);

Heute im Jahr 2016 fand ich einige Pre-Lollipop-Geräte nicht die colorAccent Einstellung ehren, so dass meine endgültige Lösung für alle APIs ist nun folgend:

// fixes pre-Lollipop progressBar indeterminateDrawable tinting
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {

    Drawable wrapDrawable = DrawableCompat.wrap(mProgressBar.getIndeterminateDrawable());
    DrawableCompat.setTint(wrapDrawable, ContextCompat.getColor(getContext(), android.R.color.holo_green_light));
    mProgressBar.setIndeterminateDrawable(DrawableCompat.unwrap(wrapDrawable));
} else {
    mProgressBar.getIndeterminateDrawable().setColorFilter(ContextCompat.getColor(getContext(), android.R.color.holo_green_light), PorterDuff.Mode.SRC_IN);
}

Für Bonuspunkte, spielt es keine veralteten Code verwenden. Versuchen Sie es!

Dies ist, was ich tat. Arbeitete.

ProgressBar:

<ProgressBar
            android:id="@+id/progressBar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="4"
            android:indeterminateDrawable="@drawable/progressdrawable"
           />

progressdrawable.xml:
verwenden Hier Gradienten Farbe zu ändern, wie Sie möchten. Und android: toDegrees = "X" increse den Wert von X und progressbar drehen schnell. Verringern und es slow.Customize nach Ihren Bedürfnissen drehen.

<?xml version="1.0" encoding="utf-8"?>
     <rotate xmlns:android="http://schemas.android.com/apk/res/android"
            android:duration="4000"
            android:fromDegrees="0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:toDegrees="360" >

            <shape
                android:innerRadius="20dp"
                android:shape="ring"
                android:thickness="4dp"
                android:useLevel="false" >
                <size
                    android:height="48dp"
                    android:width="48dp" />

                <gradient
                    android:centerColor="#80ec7e2a"
                    android:centerY="0.5"
                    android:endColor="#ffec7e2a"
                    android:startColor="#00ec7e2a"
                    android:type="sweep"
                    android:useLevel="false" />
            </shape>

        </rotate>

Beispiel: eingeben Bild Beschreibung hier

Hit das gleiche Problem, während auf Arbeits das Aussehen / Gefühl des Standardfortschrittsbalkens zu ändern. Hier sind einige weitere Informationen, die hoffentlich Menschen helfen:)

  • Der Name der XML-Datei darf nur Zeichen enthalten: a-z0-9_.
  • (dh keine Kapitelle.!)
  • Um Ihre "ziehbar" es ist R.drawable.filename
  • Referenz
  • Standarddarstellung außer Kraft zu setzen, verwenden Sie myProgressBar.setProgressDrawable(...), aber müssen Sie nicht nur Ihrem benutzerdefinierten Layout als R.drawable.filename beziehen, müssen Sie es als Drawable abzurufen:
    Resources res = getResources();
    myProgressBar.setProgressDrawable(res.getDrawable(R.drawable.filename);
    
  • Sie müssen Stil festlegen, bevor Fortschritt / Sekundär Fortschritt Einstellung / max (Einstellung es danach für mich in einem ‚leeren‘ Fortschrittsbalken geführt)

Es ist wohl eine Sache, die nicht in dieser Antwort vorgelegt:

Wenn Ihr Thema aus Theme.AppCompat erbt, ProgressBar wird übernimmt die Farbe, die Sie als "colorAccent" in Ihrem Thema definieren.

Also, mit ..

  

<item name="colorAccent">@color/custom_color</item>

.. wird die Farbe des ProgressBar automagically zum @color/custom_color tönen.

Wie ich tue es in horizontaler ProgressBar:

    LayerDrawable layerDrawable = (LayerDrawable) progressBar.getProgressDrawable();
    Drawable progressDrawable = layerDrawable.findDrawableByLayerId(android.R.id.progress);
    progressDrawable.setColorFilter(color, PorterDuff.Mode.SRC_IN);

Sie können versuchen, Ihre Stile, Themen zu ändern, oder die Verwendung von Android: indeterminateTint = „@ color / yourColor“ wo immer Sie wollen, aber es gibt nur eine Möglichkeit, dass o tun auf jedem Android SKD Version funktioniert:

Wenn Sie bar Fortschritt ist nicht unbestimmt, bitte:

progressBar.getProgressDrawable().setColorFilter(ContextCompat.getColor(context, R.color.yourColor), PorterDuff.Mode.SRC_IN );

Wenn Sie Fortschrittsbalken unbestimmt ist, bitte:

progressBar.getIndeterminateDrawable().setColorFilter(ContextCompat.getColor(getContext(), R.color.yourColor), PorterDuff.Mode.SRC_IN );

Es ist traurig, dass Android ist so ein Durcheinander!

android:progressTint="#ffffff" 

einfachste Lösung, wenn Sie die Farbe in der Layout-XML-Datei ändern möchten, verwenden Sie den folgenden Code verwenden, indeterminateTint Eigenschaft für die gewünschte Farbe.

    <ProgressBar
      android:id="@+id/progressBar"
      style="?android:attr/progressBarStyle"
      android:layout_width="wrap_content"
      android:indeterminate="true"
      android:indeterminateTintMode="src_atop"
      android:indeterminateTint="#ddbd4e"
      android:layout_height="wrap_content"
      android:layout_marginBottom="20dp"
      android:layout_alignParentBottom="true"
      android:layout_centerHorizontal="true" />

Diese Lösung funktioniert für mich:

<style name="Progressbar.White" parent="AppTheme">
    <item name="colorControlActivated">@color/white</item>
</style>

<ProgressBar
    android:layout_width="@dimen/d_40"
    android:layout_height="@dimen/d_40"
    android:indeterminate="true"
    android:theme="@style/Progressbar.White"/>

Eine weitere kleine Sache, die das Thema Lösung funktioniert, wenn Sie Erben ein Basis-theme, also für die app-kompakt-Ihr Thema sollte sein:

<style name="AppTheme.Custom" parent="@style/Theme.AppCompat">
    <item name="colorAccent">@color/custom</item>
</style>

Und dann setzen Sie diese in der Fortschrittsleiste Thema

<ProgressBar
    android:id="@+id/progressCircle_progressBar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:theme="@style/AppTheme.Custom"
    android:indeterminate="true"/>

Veröffentlicht Informationen über PaulieG Antwort hinzuzufügen, da ateiob mich gebeten, etwas zu erklären, ...


kann ich sagen, dass es (oder zumindest war zum Zeitpunkt des Schreibens, wenn ich in dieser aktuellen Version von Android-Quellcode sah) einen Bug / Problem / Optimierung im ProgressBar-Code, der einen Versuch ignoriert den Fortschritt zu setzen auf einen Wert ist es bereits an.

  • d. wenn der Fortschritt = 45, und Sie versuchen, es auf 45, wird der Code nichts tun, und wird die Fortschritte nicht neu zeichnen .

Nach dem Aufruf von ProgressBar.setProgressDrawable(), Ihre Fortschrittsbalken leer sein (weil Sie den ziehbar Teil geändert).

Dies bedeutet, dass Sie den Fortschritt einstellen müssen, und neu zu zeichnen es. Aber wenn Sie nur den Fortschritt auf einen erhaltenen Wert gesetzt, es wird nichts tun.

Sie müssen es auf 0 gesetzt zuerst, dann auf den „alten“ Wert wieder, und die Bar wird neu gezeichnet werden.


Um es zusammenzufassen:

  • erhält den "alten" Fortschrittswert
  • Aktualisieren der ziehbar / Farbe (macht bar leer)
  • setzen Sie den Fortschritt auf 0 (sonst nächste Zeile tut nichts)
  • setzen Sie den Fortschritt auf die "alten" Wert (fixe bar)
  • Invalidier

Im Folgenden wird ein Verfahren Ich habe das tut dies:

protected void onResume()
{
    super.onResume();
    progBar = (ProgressBar) findViewById(R.id.progress_base);

    int oldProgress = progBar.getProgress();

    // define new drawable/colour
    final float[] roundedCorners = new float[]
        { 5, 5, 5, 5, 5, 5, 5, 5 };
    ShapeDrawable shape = new ShapeDrawable(new RoundRectShape(
        roundedCorners, null, null));
    String MyColor = "#FF00FF";
    shape.getPaint().setColor(Color.parseColor(MyColor));
    ClipDrawable clip = new ClipDrawable(shape, Gravity.LEFT,
        ClipDrawable.HORIZONTAL);
    progBar.setProgressDrawable(clip);

    progBar.setBackgroundDrawable(getResources().getDrawable(
        android.R.drawable.progress_horizontal));

    // work around: setProgress() ignores a change to the same value
    progBar.setProgress(0);
    progBar.setProgress(oldProgress);

    progBar.invalidate();
}

Was HappyEngineer-Lösung, ich denke, es eine ähnliche Abhilfe ist, um den „Fortschritt“ Offset manuell einstellen. In jedem Fall sollte der obige Code für Sie arbeiten.

Mit der android.support.v4.graphics. drawable.DrawableCompat :

            Drawable progressDrawable = progressBar.getIndeterminateDrawable();
            if (progressDrawable  != null) {
                Drawable mutateDrawable = progressDrawable.mutate();
                DrawableCompat.setTint(mutateDrawable, primaryColor);
                progressBar.setProgressDrawable(mutateDrawable);
            }

Für einen horizontalen Stil ProgressBar ich benutze:

import android.widget.ProgressBar;
import android.graphics.drawable.GradientDrawable;
import android.graphics.drawable.ClipDrawable;
import android.view.Gravity;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;

public void setColours(ProgressBar progressBar,
                        int bgCol1, int bgCol2, 
                        int fg1Col1, int fg1Col2, int value1,
                        int fg2Col1, int fg2Col2, int value2)
  {
    //If solid colours are required for an element, then set
    //that elements Col1 param s the same as its Col2 param
    //(eg fg1Col1 == fg1Col2).

    //fgGradDirection and/or bgGradDirection could be parameters
    //if you require other gradient directions eg LEFT_RIGHT.

    GradientDrawable.Orientation fgGradDirection
        = GradientDrawable.Orientation.TOP_BOTTOM;
    GradientDrawable.Orientation bgGradDirection
        = GradientDrawable.Orientation.TOP_BOTTOM;

    //Background
    GradientDrawable bgGradDrawable = new GradientDrawable(
            bgGradDirection, new int[]{bgCol1, bgCol2});
    bgGradDrawable.setShape(GradientDrawable.RECTANGLE);
    bgGradDrawable.setCornerRadius(5);
    ClipDrawable bgclip = new ClipDrawable(
            bgGradDrawable, Gravity.LEFT, ClipDrawable.HORIZONTAL);     
    bgclip.setLevel(10000);

    //SecondaryProgress
    GradientDrawable fg2GradDrawable = new GradientDrawable(
            fgGradDirection, new int[]{fg2Col1, fg2Col2});
    fg2GradDrawable.setShape(GradientDrawable.RECTANGLE);
    fg2GradDrawable.setCornerRadius(5);
    ClipDrawable fg2clip = new ClipDrawable(
            fg2GradDrawable, Gravity.LEFT, ClipDrawable.HORIZONTAL);        

    //Progress
    GradientDrawable fg1GradDrawable = new GradientDrawable(
            fgGradDirection, new int[]{fg1Col1, fg1Col2});
    fg1GradDrawable.setShape(GradientDrawable.RECTANGLE);
    fg1GradDrawable.setCornerRadius(5);
    ClipDrawable fg1clip = new ClipDrawable(
            fg1GradDrawable, Gravity.LEFT, ClipDrawable.HORIZONTAL);        

    //Setup LayerDrawable and assign to progressBar
    Drawable[] progressDrawables = {bgclip, fg2clip, fg1clip};
    LayerDrawable progressLayerDrawable = new LayerDrawable(progressDrawables);     
    progressLayerDrawable.setId(0, android.R.id.background);
    progressLayerDrawable.setId(1, android.R.id.secondaryProgress);
    progressLayerDrawable.setId(2, android.R.id.progress);

    //Copy the existing ProgressDrawable bounds to the new one.
    Rect bounds = progressBar.getProgressDrawable().getBounds();
    progressBar.setProgressDrawable(progressLayerDrawable);     
    progressBar.getProgressDrawable().setBounds(bounds);

    // setProgress() ignores a change to the same value, so:
    if (value1 == 0)
        progressBar.setProgress(1);
    else
        progressBar.setProgress(0);
    progressBar.setProgress(value1);

    // setSecondaryProgress() ignores a change to the same value, so:
    if (value2 == 0)
        progressBar.setSecondaryProgress(1);
    else
        progressBar.setSecondaryProgress(0);
    progressBar.setSecondaryProgress(value2);

    //now force a redraw
    progressBar.invalidate();
  }

Ein Beispiel Aufruf wäre:

  setColours(myProgressBar, 
          0xff303030,   //bgCol1  grey 
          0xff909090,   //bgCol2  lighter grey 
          0xff0000FF,   //fg1Col1 blue 
          0xffFFFFFF,   //fg1Col2 white
          50,           //value1
          0xffFF0000,   //fg2Col1 red 
          0xffFFFFFF,   //fg2Col2 white
          75);          //value2

Wenn Sie brauchen nicht den ‚sekundären Fortschritt‘ einfach eingestellt Wert2 zu value1.

Wenden Sie diese kundenspezifische Art der Fortschrittsbalken.

<style name="customProgress" parent="@android:style/Widget.ProgressBar.Small">
        <item name="android:indeterminateDrawable">@drawable/progress</item>
        <item name="android:duration">40</item>
        <item name="android:animationCache">true</item>
        <item name="android:drawingCacheQuality">low</item>
        <item name="android:persistentDrawingCache">animation</item>
    </style>

@ ziehbar / progress.xml -

<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/spinner_white"
    android:pivotX="50%"
    android:pivotY="50%" />

Verwenden Sie diese Art von Bild für Fortschrittsbalken. eingeben Bild Beschreibung hier

Für besseres Ergebnis können Sie mehr Fortschritt Bilder verwenden. Und zögern Sie bitte nicht Bilder verwenden, weil Android-Plattform selbst Bilder verwenden für progressbar. Der Code wird von sdk extrahiert:)

Hier ist der Code für die Farbe der ProgressBar Wechsel von programmatisch.

ProgressBar progressBar = (ProgressBar) findViewById(R.id.pb_listProgressBar);
int colorCodeDark = Color.parseColor("#F44336");
progressBar.setIndeterminateTintList(ColorStateList.valueOf(colorCodeDark));
ProgressBar freeRamPb = findViewById(R.id.free_ram_progress_bar);

freeRamPb.getProgressDrawable().setColorFilter(
Color.BLUE, android.graphics.PorterDuff.Mode.SRC_IN);
ProgressBar bar;

private Handler progressBarHandler = new Handler();

GradientDrawable progressGradientDrawable = new GradientDrawable(
        GradientDrawable.Orientation.LEFT_RIGHT, new int[]{
                0xff1e90ff,0xff006ab6,0xff367ba8});
ClipDrawable progressClipDrawable = new ClipDrawable(
        progressGradientDrawable, Gravity.LEFT, ClipDrawable.HORIZONTAL);
Drawable[] progressDrawables = {
        new ColorDrawable(0xffffffff),
        progressClipDrawable, progressClipDrawable};
LayerDrawable progressLayerDrawable = new LayerDrawable(progressDrawables);


int status = 0;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // TODO Auto-generated method stub
    setContentView(R.layout.startup);

    bar = (ProgressBar) findViewById(R.id.start_page_progressBar);
    bar.setProgress(0);
    bar.setMax(100);

    progressLayerDrawable.setId(0, android.R.id.background);
    progressLayerDrawable.setId(1, android.R.id.secondaryProgress);
    progressLayerDrawable.setId(2, android.R.id.progress);

    bar.setProgressDrawable(progressLayerDrawable);
}

Das half mir eine eigene Farbe zu setzen durch den Code progressbar. Hoffe, es hilft

Wie pro muhammad-adil vorgeschlagen für SDK Version 21 und höher

android:indeterminateTint="@color/orange"

in XML Works für mich ist einfach genug.

Es ist so einfach, mit attr, wenn Sie mit Multistyle-Anwendungen handeln:

versuchen, auf diese Weise:

Deklarieren Sie unter Attribut attrs.xml

 <attr name="circularProgressTheme" format="reference"></attr>

Fügen Sie unter Code in styles.xml

 <style name="ProgressThemeWhite" parent="ThemeOverlay.AppCompat.Light">
        <item name="colorAccent">#FF0000</item>
    </style>

    <style name="circularProgressThemeWhite">
        <item name="android:theme">@style/ProgressThemeWhite</item>
    </style>


  <style name="AppTheme" parent="Theme.AppCompat.NoActionBar">

   <item name="circularProgressTheme">@style/circularProgressThemeWhite</item>

 </style>

verwenden Fortschrittsbalken wie unter

  <ProgressBar
        style="?attr/circularProgressTheme"
        android:id="@+id/commonProgress"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:visibility="visible"/>

Horizontale Fortschrittsbalken benutzerdefiniertes Material Stil:

Zur Farbe des Hintergrundes und den Fortschritt der horizontalen Fortschrittsbalken ändern.

<style name="MyProgressBar" parent="@style/Widget.AppCompat.ProgressBar.Horizontal">
    <item name="android:progressBackgroundTint">#69f0ae</item>
    <item name="android:progressTint">#b71c1c</item>
    <item name="android:minWidth">200dp</item>
</style>

es Anwenden Bar, um die Fortschritte durch style-Attribut Einstellung für individuelle Material Design und individuelle Fortschrittsprüfung http://www.zoftino.com/android-progressbar-and-custom-progressbar-examples

Zum horizontalen ProgressBar Farbe (in Kotlin) ändern:

fun tintHorizontalProgress(progress: ProgressBar, @ColorInt color: Int = ContextCompat.getColor(progress.context, R.color.colorPrimary)){
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        progress.progressTintList = ColorStateList.valueOf(color)
    } else{
        val layerDrawable = progress.progressDrawable as? LayerDrawable
        val progressDrawable = layerDrawable?.findDrawableByLayerId(android.R.id.progress)
        progressDrawable?.setColorFilter(color, PorterDuff.Mode.SRC_ATOP)
    }
}

Um unbestimmte ProgressBar Farbe zu ändern:

fun tintIndeterminateProgress(progress: ProgressBar, @ColorInt color: Int = ContextCompat.getColor(progress.context, R.color.colorPrimary)){
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        progress.indeterminateTintList = ColorStateList.valueOf(color)
    } else {
        (progress.indeterminateDrawable as? LayerDrawable)?.apply {
            if (numberOfLayers >= 2) {
                setId(0, android.R.id.progress)
                setId(1, android.R.id.secondaryProgress)
                val progressDrawable = findDrawableByLayerId(android.R.id.progress).mutate()
                progressDrawable.setColorFilter(color, PorterDuff.Mode.SRC_ATOP)
            }
        }
    }
}

Und es tönt schließlich normalerweise Pre-Lutscher Progress

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top