【问题标题】:How to change the color of an indefinite ProgressBar?如何更改无限进度条的颜色?
【发布时间】:2011-02-13 07:47:06
【问题描述】:

我有一个进度条,样式如下:style="?android:attr/android:progressBarStyleSmall"

遗憾的是,该栏几乎是白色的,在我的情况下显示在白色背景上。 因此,进度条几乎不可见。

如何更改进度条的颜色?深灰色会很棒。

【问题讨论】:

    标签: android layout progress-bar


    【解决方案1】:

    我很难改变它的颜色。为了解决这个问题,我得到了android的src代码,并做了我自己的ProgressBar类。

    不是最好的答案,但它对我有用。

    【讨论】:

    • 可以分享一下课程吗?
    【解决方案2】:

    条形图是那种颜色的原因是因为你选择的样式。这是一种固定的样式,使用系统主题来生成 UI 元素。

    查看here的源代码。这个progressBarStyleSmall 属性使用here 定义的样式。

    <style name="Widget.ProgressBar.Small">
        <item name="android:indeterminateDrawable">@android:drawable/progress_small_white</item>
        <item name="android:minWidth">16dip</item>
        <item name="android:maxWidth">16dip</item>
        <item name="android:minHeight">16dip</item>
        <item name="android:maxHeight">16dip</item>
    </style>
    

    只需按照 android 源代码中的示例创建自定义样式即可。您需要将 android:indeterminateDrawable 替换为您想要的。

    【讨论】:

      【解决方案3】:

      答案已经在 SO:

      stackoverflow.com/questions/2020882/how-to-change-progress-bars-progress-color-in-android

      您可以通过android:indeterminateDrawable 属性简单地更改进度条中显示的整个drawable。

      【讨论】:

        【解决方案4】:

        要获得黑色 ProgressBar,请使用其中一种反向样式:

        <ProgressBar style="@android:style/Widget.ProgressBar.Inverse"/>
        <ProgressBar style="@android:style/Widget.ProgressBar.Large.Inverse"/>
        <ProgressBar style="@android:style/Widget.ProgressBar.Small.Inverse"/>
        

        【讨论】:

        • 这不适用于我们使用氰基的姜饼模型之一。太糟糕了:(
        【解决方案5】:

        只是一个注释,使用

        <ProgressBar style="@android:style/Widget.ProgressBar.Inverse"/> 
        

        或任何反向进度条,您必须将最低 android sdk 要求设置为 4 级(Android 1.6)。

        【讨论】:

          【解决方案6】:
          public static void setColorOfProgressBar(ProgressBar mProgressBar, int mColor){
              mProgressBar.getIndeterminateDrawable().setColorFilter(mColor, android.graphics.PorterDuff.Mode.MULTIPLY);
          }
          

          【讨论】:

            【解决方案7】:
            progressBar.getIndeterminateDrawable().setColorFilter(
                        getResources().getColor(R.color.light_light_purple),
                        android.graphics.PorterDuff.Mode.SRC_IN);
            

            此代码将默认的全息终止可绘制颜色更改为您自己的颜色。 定义您的颜色代码并将R.color.light_light_purple 替换为R.color.your_color_code

            【讨论】:

            • 这确实应该是公认的答案。我最近才发现滤色器方法,基本上可以将任何东西更改为您想要的任何颜色,这非常棒。
            • 非常感谢..!请接受我的回答,为他人带来更多好处:)
            • 我只需要在 Lollipop 之前的 SDK 版本中使用这个 sn-p,所以,我将这个 sn-p 包装在一个静态方法中:LegacyStyleUtil#adjustLegacyStyle(Context, ProgressBar)。然后,我从我的活动/片段中调用此方法。 public static void adjustLegacyStyle(Context context, ProgressBar progressBar) { if (BuildConfigUtil.isLegacySDK() &amp;&amp; progressBar != null) { progressBar.getIndeterminateDrawable().setColorFilter( context.getResources().getColor(R.color.green_progress), PorterDuff.Mode.SRC_IN); } }
            • 不适用于较新的 Android,其中不确定的进度条是简单的圆圈:它停止转动。
            猜你喜欢
            • 2016-11-02
            • 2014-10-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-06-12
            • 1970-01-01
            相关资源
            最近更新 更多