虽然colorAccent颜色,但android上的不确定圆圈进度条是白色的

时间:2014-11-16 21:17:12

标签: android android-5.0-lollipop material-design

我无法弄清楚如何更改API-21上不确定圆圈进度条的颜色。我确保我的colorAccent设置正确。我的理解是系统应该从colorAccent获取并相应地调整ProgressBar。知道会出现什么问题吗?

应用程序/ SRC /主/ RES /布局-V21 / fragment_story_comments.xml

<ProgressBar
        android:id="@+id/progress_bar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:visibility="visible"/>

应用程序/ SRC /主/ RES /值/的themes.xml

<style name="AppTheme.Base" parent="Theme.AppCompat.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:windowNoTitle">true</item>
</style>

应用程序/ SRC /主/ RES /值/ colors.xml

<color name="colorAccent">#ff5722</color>
<color name="colorPrimary">#ff5722</color>
<color name="colorPrimaryDark">#e64a19</color>

4 个答案:

答案 0 :(得分:85)

注意:这仅适用于Android 5.0(Lollipop)及以上版本,符合原始请求。对于较旧的Android版本,您必须替换ProgressBar的progressDrawable。

根据Liam的回答,我设法使用indeterminateTint标志来处理XML。

显然要让它工作,你需要设置indeterminate和indeterminateTintMode标志。

这种模式对我来说有点神秘。我尝试了所有这些但只得到了src_in和src_atop的预期结果。我不知道这些模式究竟是做什么的,所以如果有人可以对此进行扩展,我将不胜感激。

无论如何,这应该有效:

<ProgressBar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:indeterminate="true"
    android:indeterminateTint="#F00"
    android:indeterminateTintMode="src_in" />

答案 1 :(得分:20)

这适用于较低版本的Android:

if (progBar.getIndeterminateDrawable() != null) {
        progBar.getIndeterminateDrawable().setColorFilter(getResources().getColor(R.color.accent), android.graphics.PorterDuff.Mode.SRC_IN);
}

答案 2 :(得分:11)

我设法将API 21上的ProgressBar的颜色从绿色改为白色,如下所示:

mProgressBar.getIndeterminateDrawable().setColorFilter(new LightingColorFilter(0xFF000000, 0xFFFFFF));

但是,我仍然无法弄清楚如何在XML中做到这一点,但希望这会对某人有所帮助。

答案 3 :(得分:6)

您应该为主题中的激活控件设置颜色:

 <item name="colorControlActivated">@color/accent</item>

这仅适用于Android 5.0 +