【问题标题】:change the color of a ProgressBar based on a variable根据变量更改 ProgressBar 的颜色
【发布时间】:2020-12-30 16:14:44
【问题描述】:

我正在制作一个带有一些 ProgressBars 的 Android 应用。 ProgressBar 背景必须始终为白色,而进度颜色必须根据变量而变化,例如:

  • 如果 i
  • 如果 i > 50:颜色必须是红色

这是 ProgressBar 样式的 XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape
            android:shape="ring"
            android:thicknessRatio="16"
            android:useLevel="false">
            <solid android:color="#FFFF"/>
        </shape>
    </item>
    <item android:id="@android:id/progress">
        <shape
            android:shape="ring"
            android:thicknessRatio="16"
            android:useLevel="true">
            <solid android:color="@color/white" />
        </shape>
    </item>
</layer-list>

进度颜色设置为白色作为背景。怎么改?

【问题讨论】:

    标签: java android xml progress-bar


    【解决方案1】:

    在 xml 中设置你的进度条:

     <ProgressBar
        android:id="@+id/progressBar1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:indeterminateDrawable="@drawable/nameofyourcustomprogressbar"
    

    当您访问微调器时,您可以设置进度颜色属性:

    ProgressBar spinner = (ProgressBar) findViewById(R.id.progressBar1);
    spinner.getIndeterminateDrawable().setColorFilter(Color.parseColor("#bb86fc"), PorterDuff.Mode.MULTIPLY);
    

    #bb86fc 是十六进制字符串格式的颜色。

    如果您在 values/colors.xml 中列出了一种颜色并希望以这种方式访问​​一种颜色:

    <resources>
        <color name="purple_200">#FFBB86FC</color>
    </resources>
    

    values/colors.xml获取你想要的颜色:

    Color.parseColor(getString(R.color.purple_200));
    

    如果你得到一个错误下划线 - “字符串类型的预期资源”只需添加注释

    @SuppressLint("ResourceType")
    

    【讨论】:

    • 感谢您的帮助,我使用spinner.setProgressTintList(ColorStateList.valueOf(Color.RED));解决了
    猜你喜欢
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-12
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多