如何将Android默认Indeterminate ProgressBar改为圆角样式
解决Android不确定进度条(Indeterminate ProgressBar)圆角样式的简便方法
嘿,这个需求我做项目时也碰到过,不用写复杂的自定义View,两种简单方式就能搞定:
方法一:自定义Drawable实现圆角(兼容所有API版本)
这是最通用的方案,不管你用哪个Android版本都能生效:
- 首先在
res/drawable目录下创建一个名为indeterminate_round_progress.xml的文件,内容如下:
<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:fromDegrees="0" android:pivotX="50%" android:pivotY="50%" android:toDegrees="360"> <shape android:innerRadiusRatio="3" android:shape="ring" android:thicknessRatio="8" android:useLevel="false"> <solid android:color="#FFFFFF" /> <!-- 这里可直接设置颜色,也可以保留原tint属性后续覆盖 --> <corners android:radius="16dp" /> <!-- 圆角大小,按需调整 --> </shape> </rotate>
- 修改你原来的ProgressBar布局,替换默认的不确定状态drawable:
<ProgressBar android:layout_width="100dp" android:layout_height="100dp" android:indeterminate="true" android:indeterminateDrawable="@drawable/indeterminate_round_progress" <!-- 若上面drawable未设置颜色,可保留以下tint属性 --> <!-- android:indeterminateTintMode="src_atop" --> <!-- android:indeterminateTint="#FFFFFF" --> />
方法二:用Material Design组件(适配Android 10+ 或依赖Material库)
如果你已经在用Material Design组件库,这个方法更省心,直接用官方带圆角属性的进度条:
- 确保项目已引入Material库(新建项目默认自带,若没有则在
build.gradle(module level)添加):
implementation 'com.google.android.material:material:1.9.0' <!-- 可替换为最新版本 -->
- 布局里替换为
CircularProgressIndicator,直接设置圆角属性:
<com.google.android.material.progressindicator.CircularProgressIndicator android:layout_width="100dp" android:layout_height="100dp" android:indeterminate="true" app:indicatorColor="#FFFFFF" <!-- 设置进度条颜色 --> app:cornerRadius="16dp" <!-- 圆角大小,按需调整 --> app:trackColor="@android:color/transparent" <!-- 不需要背景轨道可加此属性 --> />
小提示
- 两种方法里的
16dp圆角大小可根据UI需求调整,比如改成8dp或24dp都可以。 - 自定义Drawable时,
thicknessRatio和innerRadiusRatio能调整进度条的粗细和内圆大小,让它更贴合你的设计。
内容的提问来源于stack exchange,提问作者linker
相关产品推荐
相关产品推荐

