Ich verwende eine kreisförmige ProgressBar
in meiner Activty.My-Datei. Das Problem ist, dass sie auf meiner Seite nicht richtig angezeigt wird, da die Hintergrundfarbe meiner Seite mit ProgressBar identisch ist. Wie kann ich die Farbe von ProgressBar ändern , um sie richtig sichtbar zu machen? ? Bitte helfen Sie
Bitte machen Sie einen XML-Dateinamen progress.xml, legen Sie ihn im Ordner res/xml ab und schreiben Sie den Code unten in diese XML-Datei.
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:pivotX="50%" Android:pivotY="50%" Android:fromDegrees="0"
Android:toDegrees="360">
<shape Android:shape="ring" Android:innerRadiusRatio="3"
Android:thicknessRatio="8" Android:useLevel="false">
<size Android:width="76dip" Android:height="76dip" />
<gradient Android:type="sweep" Android:useLevel="false"
Android:startColor="#447a29"
Android:endColor="#447a29"
Android:angle="0"
/>
</shape>
</rotate>
nachdem Sie diese XML-Datei erstellt haben, setzen Sie Ihren Progressbars-Hintergrund als XML.
<ProgressBar
Android:id="@+id/ProgressBar01"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background = "@xml/progress">
Dies ist eine alte Frage, aber die Verwendung eines Themas wird hier nicht erwähnt. Wenn Ihr Standarddesign AppCompat
verwendet, ist die Farbe Ihrer ProgressBar
die von Ihnen definierte colorAccent
.
Wenn Sie colorAccent
ändern, wird auch die Farbe Ihrer ProgressBar
geändert. Diese Änderungen werden jedoch auch an mehreren Stellen angezeigt. Wenn Sie also eine andere Farbe nur für eine bestimmte ProgressBar
wünschen, können Sie dies tun, indem Sie ein Thema nur auf diese ProgressBar
anwenden:
Erweitern Sie Ihr Standarddesign und überschreiben Sie colorAccent
.
<style name="AppTheme.WhiteAccent">
<item name="colorAccent">@color/white</item> <!-- Whatever color you want-->
</style>
Fügen Sie in ProgressBar
das Android:theme
-Attribut hinzu:
Android:theme="@style/AppTheme.WhiteAccent"
So wird es ungefähr so 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 ändern also einfach eine colorAccent
für Ihre bestimmte ProgressBar
.
Note: Die Verwendung von style
funktioniert nicht. Sie müssen nur Android:theme
verwenden Sie können die Verwendung von theme hier finden: https://plus.google.com/u/0/+AndroidDevelopers/posts/JXHKyhsWHAH
Bearbeiten
Hier ist der Code zum Ändern der Farbe von ProgressBar durch Programm.
ProgressBar progressBar = (ProgressBar) findViewById(R.id.pb_listProgressBar);
int colorCodeDark = Color.parseColor("#F44336");
progressBar.setIndeterminateTintList(ColorStateList.valueOf(colorCodeDark));
Der einfachste Weg ist die Verwendung des Android: indeterminateTint-Attributs:
<ProgressBar
Android:indeterminate="true"
Android:indeterminateTint="@Android:color/black"
........... />
in xml können Sie die Farbe so anwenden
<ProgressBar
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:id="@+id/loader"
Android:indeterminateTint="@color/my_color"
Android:layout_centerInParent="true"/>
so können Sie Java-Code verwenden.
progressBar.getProgressDrawable().setColorFilter(ContextCompat.getColor(getActivity(),R.color.product_status_color), PorterDuff.Mode.MULTIPLY)
sie können auch nur das Attribut ändern
Android:indeterminateDrawable="@drawable/yourxmlfile"
und diesen Stil beibehalten
style="@Android:style/Widget.ProgressBar.Small"
fortschrittliche Datei erstellen
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:id="@Android:id/background">
<shape>
<corners Android:radius="5dip" />
<solid Android:color="@color/colorWhite" />
</shape>
</item>
<item Android:id="@Android:id/secondaryProgress">
<clip>
<shape>
<corners Android:radius="5dip" />
<solid Android:color="@color/colorPrimary" />
</shape>
</clip>
</item>
<item Android:id="@Android:id/progress">
<clip>
<shape>
<corners
Android:radius="5dip" />
<solid Android:color="@color/colorPrimary" />
</shape>
</clip>
</item>
und set Android: progressDrawable = "@ drawable/app_progressbar_back"
so was
<ProgressBar
Android:id="@+id/dialogProgressView"
style="?android:attr/progressBarStyleHorizontal"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:progressDrawable="@drawable/app_progressbar_back"
Android:progress="50"
Android:layout_marginTop="@dimen/margin_20" />
Hier ist eine Erklärung. Um den Hintergrund eines Indeterminate ProgressBar
zu ändern, benötigen Sie einen Drehring, da dieser sich dreht. In der Antwort von @Chirag hat er einen Drehring definiert und auf den Hintergrund von ProgressBar
angewendet. Wenn Sie ein Horizontal ProgressBar
haben, benötigen Sie eine rectangle
.
PS: Ich habe es nicht mit anderen Formen versucht.
Sie können die Farbe Ihrer Fortschrittsleiste auch programmgesteuert in Ihren Aktivitäten oncreate oder in Ihren Fragmenten onViewCreated () ändern.
pBar.getIndeterminateDrawable().setColorFilter(0xFFFF0000, Android.graphics.PorterDuff.Mode.MULTIPLY);
Hier wird die Farbe "0xFFFF0000" verwendet, die rot ist. Sie können es entsprechend Ihren Bedürfnissen ändern
Ich verwende die Version Android 2.3.1. Ich erstelle eine XML-Datei mit dem Namen progressbar und rufe sie im Tag der Layout-Fortschrittsanzeige auf. Android: progressDrawable = "@ drawable/progressbar"
<item Android:id="@+id/progress">
<clip>
<shape>
<gradient Android:startColor="@color/textColor"
Android:centerColor="@color/textColor"
Android:endColor="@color/textColor"
Android:gradientRadius="20dp"
>
</gradient>
</shape>
</clip>
</item>
für mich mussten diese beiden Zeilen vorhanden sein, damit sie funktionieren und die Farbe ändern:
Android:indeterminateTint="@color/yourColor"
Android:indeterminateTintMode="src_in"
PS: aber es ist nur verfügbar von Android 21