更改水平进度条颜色

3 android styles progress-bar

问题描述

我正在尝试ProgressBar使用中定义的自定义样式更改颜色style.xml

布局文件

<ProgressBar
        android:id="@+id/progress_bar"
        style="@style/ProgressTheme"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:indeterminate="true"
        android:indeterminateBehavior="repeat" />
Run Code Online (Sandbox Code Playgroud)

样式文件

<style name="ProgressTheme" parent="Widget.AppCompat.ProgressBar.Horizontal">
        <item name="colorAccent">#000</item>
</style>
Run Code Online (Sandbox Code Playgroud)

我找到了一些关于如何以编程方式或通过添加一些来更改颜色的有用文章layer-list,但我想要简单的解决方案。我想我的实施方式应该有效。

我怎样才能改变颜色?

Chi*_*oni 5

您可以尝试使用:

mProgressBar.getProgressDrawable().setColorFilter(Color.BLACK, android.graphics.PorterDuff.Mode.SRC_IN);
Run Code Online (Sandbox Code Playgroud)

对于棒棒糖及以上,请使用:

mProgressBar.setProgressTintList(ColorStateList.valueOf(Color.BLACK));
Run Code Online (Sandbox Code Playgroud)

如果要寻找 xml 解决方案,请尝试ProgressBar(Api 21 +) 的这些属性:

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

创建下面<style.../>styles.xml(v21)有关API 21+作品:

<style name="blackProgressBar" parent="Widget.AppCompat.ProgressBar.Horizontal">
    <item name="android:indeterminateTintMode">src_atop</item>
    <item name="android:indeterminateTint">@android:color/black</item>
</style>
Run Code Online (Sandbox Code Playgroud)

并将其应用为:

<ProgressBar
    ...
    style="@style/blackProgressBar" />
Run Code Online (Sandbox Code Playgroud)