如何更改进度条的默认颜色?

Aru*_*ole 27 android android-layout progress-bar

ProgressBar在我的Activty中使用循环.我的问题是它在我的页面上看不到,因为我的页面的BG颜色与ProgressBar相同.那么如何更改ProgressBar的颜色以使其正常可见?请帮忙

Chi*_*rag 48

请创建一个xml文件名progress.xml并将其放在res/xml文件夹中,并在该xml文件中写下以下代码.

 <?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> 
Run Code Online (Sandbox Code Playgroud)

创建此xml文件后,将progressbars背景设置为此xml ..

喜欢

<ProgressBar
  android:id="@+id/ProgressBar01" 
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:background = "@xml/progress">
Run Code Online (Sandbox Code Playgroud)

  • 我认为它应该是drawable而不是xml (2认同)

Nav*_*r M 33

这是一个老问题,但这里没有提到使用主题.如果您的默认主题正在使用AppCompat,您ProgressBar的颜色将是colorAccent您已定义的颜色.

改变colorAccent也会改变你ProgressBar的颜色,但这些改变也反映在多个地方.因此,如果您只想为特定的颜色设置不同的颜色,则ProgressBar可以通过将主题应用于此ProgressBar来实现:

所以它看起来像这样:

<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" />
Run Code Online (Sandbox Code Playgroud)

所以你只是换一个colorAccent特定的ProgressBar.

注意:使用style不起作用.你android:theme只需要使用.您可以在此处找到更多主题用途:https://plus.google.com/u/0/+AndroidDevelopers/posts/JXHKyhsWHAH

编辑

以下是以编程方式更改ProgressBar颜色的代码.

ProgressBar progressBar = (ProgressBar) findViewById(R.id.pb_listProgressBar);
int colorCodeDark = Color.parseColor("#F44336");
progressBar.setIndeterminateTintList(ColorStateList.valueOf(colorCodeDark));
Run Code Online (Sandbox Code Playgroud)


小智 15

最简单的方法是使用android:indeterminateTint属性:

<ProgressBar
        android:indeterminate="true"
        android:indeterminateTint="@android:color/black"
        ........... />
Run Code Online (Sandbox Code Playgroud)

  • api 21及以上版本支持此功能. (6认同)
  • 我想这是最好的答案! (2认同)

Aal*_*tel 7

在 xml 中,您可以像这样应用颜色

<ProgressBar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/loader"
    android:indeterminateTint="@color/my_color"
    android:layout_centerInParent="true"/>
Run Code Online (Sandbox Code Playgroud)


Jul*_*n J 7

转到 .xml 文件中进度条的声明:


粘贴这行代码:

android:indeterminateTint="@color/white"
Run Code Online (Sandbox Code Playgroud)

上面的示例允许您将进度条的颜色更改白色现在由您来调整它以适应您想要的颜色

仅适用于 Android API >= 21


Ami*_*ian 5

对我来说,这两行必须在那里才能工作并改变颜色:

android:indeterminateTint="@color/yourColor"
android:indeterminateTintMode="src_in"
Run Code Online (Sandbox Code Playgroud)

PS:但它仅适用于 android 21