Ich möchte wissen, wie ich eine unbestimmte ProgressBar
Farbe von der Basisfarbe Weiß / Grau in Schwarz ändern kann . Wenn ich das ändere indeterminateDrawable
, erhalte ich ein statisches Bild anstelle einer sich bewegenden animierten Fortschrittsleiste. Gibt es eine Möglichkeit, dies einfach in XML zu tun?
74
android:indeterminateTint="@colors/your_color"
android:indeterminateTintMode="src_in"
Verwenden Sie einen der umgekehrten Stile, um eine ProgressBar im Standarddesign zu erhalten, das auf weißem / hellem Hintergrund verwendet werden soll:
<ProgressBar style="@android:style/Widget.ProgressBar.Inverse"/> <ProgressBar style="@android:style/Widget.ProgressBar.Large.Inverse"/> <ProgressBar style="@android:style/Widget.ProgressBar.Small.Inverse"/>
Dadurch wird die transparente ProgressBar normalerweise schwarz angezeigt. Bei einigen Betriebssysteminstallationen werden jedoch benutzerdefinierte Assets verwendet. Wenn Sie nach einer bestimmten Farbe suchen, müssen Sie Ihre eigenen Zeichen rollen, indem Sie den Anweisungen von CommonsWare folgen.
quelle
Ich sehe, dass andere Antworten ziemlich alt sind. Um die unbestimmte ProgressBar-Farbe zu ändern, müssen Sie nur die Attribute
android:indeterminateTint
undandroid:indeterminateTintMode
Attribute in IhremProgressBar
Element direkt in XML festlegen :<ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:indeterminateTint="@color/colorPrimary" android:indeterminateTintMode="src_in" android:indeterminate="true" />
android:indeterminateTint
- Farbton für die unbestimmte Fortschrittsanzeige.android:indeterminateTintMode
- Mischmodus zum Anwenden der Fortschrittsanzeige.Getter- und Setter-Methoden für diese Attribute sind:
getIndeterminateTintList()
getIndeterminateTintMode()
setIndeterminateTintList(ColorStateList tint)
setIndeterminateTintMode(PorterDuff.Mode tintMode)
Alle von ihnen wurden in API Level 21 hinzugefügt
quelle
Ich mache ein Beispielprojekt und poste es in meinem Blog. Bitte sieh dir ... an. http://www.hrupin.com/2011/09/21/how-to-make-custom-indeterminate-progressbar-in-android-or-how-to-change-progressbar-style-or-color
Hoffe, es hilft dir
quelle
<?xml version="1.0" encoding="UTF-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@android:id/background" android:drawable="@drawable/bg" /> <item android:id="@android:id/secondaryProgress" android:drawable="@drawable/secondary" /> <item android:id="@android:id/progress" android:drawable="@drawable/progress" /> </layer-list>
quelle
Für API weniger als 23 verwenden
progressBar.getIndeterminateDrawable().setColorFilter( getResources().getColor(Your_Color), android.graphics.PorterDuff.Mode.SRC_IN);
sonst verwenden
progressBar.getIndeterminateDrawable().setColorFilter( ContextCompat.getColor(context, Your_Color), android.graphics.PorterDuff.Mode.SRC_IN);
quelle
Überschreiben Sie
android:colorControlActivated
in Ihrem AppTheme die in Ihrem styles.xml sein sollte:<style name="AppTheme" parent="..."> ... <item name="android:colorControlActivated">@color/beautiful_color</item> ... </style>
Funktioniert mit API 21+
quelle
Eigentlich müssen Sie nur eine XML-Datei in Drawable erstellen (siehe unten). progress_spinner_001 zeigt auf das Bild, das Sie animieren möchten, und auf die Dauer, die Sie anzeigen möchten Frame für ....... und setze dein Android: indeterminateDrawable = Dateiname_in_drawable ....
<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@drawable/progress_spinner_001" android:duration="300" /> <item android:drawable="@drawable/progress_spinner_002" android:duration="300" /> <item android:drawable="@drawable/progress_spinner_003" android:duration="300" /> <item android:drawable="@drawable/progress_spinner_004" android:duration="300" /> <item android:drawable="@drawable/progress_spinner_005" android:duration="300" /> <item android:drawable="@drawable/progress_spinner_006" android:duration="300" /> <item android:drawable="@drawable/progress_spinner_007" android:duration="300" /> <item android:drawable="@drawable/progress_spinner_008" android:duration="300" /> </animation-list>
ps u muss möglicherweise die Größe des Fortschrittsbalkens ändern, damit er wie gewünscht angezeigt wird
quelle