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

Android ProgressBar加载时为何忽略部分XML属性?

问题原因及解决方案

错误点分析

  • 你使用的?android:attr/progressBarStyle是系统默认的不确定圆形进度条样式,该样式本身没有实现确定模式的绘制逻辑,因此即使设置android:indeterminate="false"也不会生效,进度条依然会保持不确定的动画状态。
  • 显示绿色是因为不确定状态下,progressTint不会生效,系统会使用indeterminateTint的默认绿色值。

解决方案

方案1:自定义圆形确定进度条(兼容所有Android版本)

  1. 在res/drawable目录下创建circle_progress.xml文件,定义圆形进度条的形状:
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="270"
    android:toDegrees="270">
    <shape
        android:innerRadiusRatio="2.5"
        android:shape="ring"
        android:thicknessRatio="10"
        android:useLevel="true">
        <solid android:color="#ffff0000" />
    </shape>
</rotate>
  1. 修改布局中的ProgressBar,更换样式并指定自定义drawable,同时设置初始进度:
<ProgressBar
    android:id="@+id/progressBar2"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="80dp"
    android:layout_height="80dp"
    android:layout_marginStart="16dp"
    android:layout_marginTop="16dp"
    android:indeterminate="false"
    android:progress="50" <!-- 必须设置初始进度,否则无显示 -->
    android:progressDrawable="@drawable/circle_progress"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

方案2:使用Material组件的原生圆形确定进度条(推荐,需依赖Material库)

如果你的项目已集成Material Components库,可以直接使用CircularProgressIndicator,它原生支持确定模式:

<com.google.android.material.progressindicator.CircularProgressIndicator
    android:id="@+id/progressBar2"
    android:layout_width="80dp"
    android:layout_height="80dp"
    android:layout_marginStart="16dp"
    android:layout_marginTop="16dp"
    android:indeterminate="false"
    android:progress="50"
    app:indicatorColor="#ffff0000"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

注意事项

确定型进度条必须通过android:progress属性(或代码中调用setProgress()方法)设置具体进度值,否则不会显示任何进度内容。

内容的提问来源于stack exchange,提问作者Ian Bailey-Mortimer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 01:15:31