You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置Android ProgressBar剩余部分为不透明白色、完成部分半透明黑色?

解决ProgressBar自定义透明度与颜色的问题

我来帮你搞定这个ProgressBar的样式需求~其实你已经找对了方向,ProgressBar的剩余未完成部分就是对应@android:id/background这个item,而已完成的进度部分是@android:id/progress项,我们只需要给这两个部分分别设置带透明度的颜色就可以了。

具体实现步骤:

  1. 创建自定义进度条样式的drawable文件
    在res/drawable目录下新建一个progress_bar_custom.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>
            <!-- #FFFFFF 是完全不透明的白色,对应透明度1.0 -->
            <solid android:color="#FFFFFF" />
        </shape>
    </item>

    <!-- 已完成进度部分:半透明黑色 -->
    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <!-- #80000000 是半透明黑色:前两位80对应透明度0.5,后六位000000是纯黑色 -->
                <solid android:color="#80000000" />
            </shape>
        </clip>
    </item>
</layer-list>
  1. 在布局中引用这个自定义样式
    在你的ProgressBar布局代码里,通过android:progressDrawable属性关联刚才创建的drawable:
<ProgressBar
    android:id="@+id/custom_progress_bar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:progressDrawable="@drawable/progress_bar_custom"
    android:progress="60" /> <!-- 这里是示例进度,你可以根据业务逻辑动态设置 -->

进阶优化:用颜色资源统一管理

如果你想让代码更易维护,可以在res/values/colors.xml里预定义这些带透明度的颜色:

<color name="white_fully_opaque">#FFFFFF</color>
<color name="black_half_transparent">#80000000</color>

然后在drawable文件里直接引用:

<solid android:color="@color/white_fully_opaque" />
<!-- 进度部分的颜色 -->
<solid android:color="@color/black_half_transparent" />

小提示:透明度的十六进制计算

Android里颜色的十六进制格式是ARGB,前两位是Alpha(透明度)通道:

  • FF = 完全不透明(透明度1.0)
  • 80 = 半透明(透明度0.5,因为255*0.5≈128,十六进制128就是80)
  • 00 = 完全透明

这样设置后,你的ProgressBar就会显示:未完成区域是纯白不透明,已完成区域是半透黑啦~

内容的提问来源于stack exchange,提问作者mlin956

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:13:44