【问题标题】:Change drawables on Android ProgressBar在 Android ProgressBar 上更改可绘制对象
【发布时间】:2014-10-14 08:02:53
【问题描述】:

我有progress_incomplete.xml 和progress_complete.xml

两个文件都是这样的(我删除了所有的渐变和笔触信息以节省空间,因为它并不重要)。

基本上不完整的.xml 有黄色,完整的有绿色。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
    <shape>
        ...
    </shape>
</item>

<item android:id="@android:id/secondaryProgress">
    <clip>
        <shape>
         ...
        </shape>
    </clip>
</item>
<item
    android:id="@android:id/progress"
>
    <clip>
        <shape>
          ...
        </shape>
    </clip>
</item>

</layer-list>

在我的 Java 文件中,我有这个:

            if (percentage == 100)
            {
                // Change colour
                progressBar.setProgressDrawable(R.drawable.progress_complete);
            }

我发现这不起作用。我也尝试过 setBackground 和 setBackgroundDrawable,但更改没有生效。

我该怎么办?

谢谢

【问题讨论】:

  • ProgressBar 类中没有采用 int 的 setProgressDrawable() 方法。

标签: android progress-bar


【解决方案1】:
if (percentage == 100) {
    // Change colour
    Drawable drawable = getResources().getDrawable(R.drawable.progress_complete);
    progressBar.setProgressDrawable(drawable);
}

【讨论】:

    【解决方案2】:

    在 SO 上参考this 答案,您可以尝试此解决方案。它可能会解决你的问题。

    if (percentage == 100)
    
        {
            // Change colour
            Rect bounds = progressBar.getProgressDrawable().getBounds();
            progressBar.setProgressDrawable(R.drawable.progress_complete);
            progressBar.getProgressDrawable().setBounds(bounds);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-19
      • 1970-01-01
      • 2013-12-11
      • 2017-08-04
      • 1970-01-01
      • 2013-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多