android中修改progressbar的两种方法

发布时间 2023-05-04 19:32:31作者: 小趴菜且能喝66

1.创建自定义进度条样式

在res/values/styles.xml文件中创建一个自定义样式来指定进度条的颜色。例如,以下样式设置进度的前景色为蓝色,背景色为灰色:

<style name="CustomProgressBar" parent="@android:style/Widget.ProgressBar.Horizontal">
    <item name="android:progressDrawable">@drawable/custom_progressbar</item>
    <item name="android:minHeight">10dp</item>
    <item name="android:maxHeight">10dp</item>
</style>

  

接下来,在res/drawable目录下创建一个名为custom_progressbar的XML文件来指定进度条的颜色。例如,以下布局文件显示如何将进度条前景色设置为蓝色,背景色设置为灰色:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background">
        <shape>
            <corners android:radius="5dp" />
            <solid android:color="#D3D3D3" />
        </shape>
    </item>

    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <corners android:radius="5dp" />
                <solid android:color="#0000FF" />
            </shape>
        </clip>
    </item>
</layer-list>

  

最后,在布局文件中将新的进度条样式应用到ProgressBar控件:

<ProgressBar
    android:id="@+id/progressBar"
    style="@style/CustomProgressBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:max="100"
    android:progress="50" />

  


2.动态修改进度条颜色

在Java代码中,可以使用setProgressDrawable()和setIndeterminateDrawable()方法动态修改进度条的前景和背景颜色。例如,以下代码演示如何将进度条的前景色设置为蓝色,背景色设置为灰色:

ProgressBar progressBar = findViewById(R.id.progressBar);
Drawable progressDrawable = getResources().getDrawable(R.drawable.custom_progressbar);
progressBar.setProgressDrawable(progressDrawable);
Drawable indeterminateDrawable = getResources().getDrawable(R.drawable.custom_progressbar);
progressBar.setIndeterminateDrawable(indeterminateDrawable);

  

其中,getDrawable()方法获取了一个新的可绘制的进度条,该进度条将使用上面所示的自定义颜色。