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

Android开发:ProgressBar静态灰色环形背景不显示问题求助

实现带静态灰色圆形背景的ProgressBar问题

我想要实现一个带有静态灰色圆形背景的ProgressBar,但设置ring形状的背景完全不显示,测试oval、rectangle形状时可以正常显示。当前代码如下:

main_layout.xml

<View
    android:layout_width="48dp"
    android:layout_height="48dp"
    android:layout_gravity="center"
    android:background="@drawable/progress_bar_background"
    android:layout_marginBottom="-48dp" />

<ProgressBar
    android:id="@+id/process_loading_circle"
    style="?android:attr/progressBarStyle"
    android:layout_width="48dp"
    android:layout_height="48dp"
    android:layout_gravity="center"
    android:indeterminateTint="@color/limeGreen" />

progress_bar_background.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="ring">
    <solid android:color="@color/grey" />
    <size android:width="48dp" android:height="48dp" />
    <stroke android:thickness="4dp" android:thicknessRatio="2" />
</shape>

问题原因与解决方案

ring形状不显示是因为缺少关键属性配置:一是solid属性对ring形状无效,需用stroke定义环形颜色;二是必须指定内环半径相关属性,同时开启useLevel="false"才能让环形正常显示。

修改后的progress_bar_background.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="ring"
    android:innerRadiusRatio="2.5" <!-- 控制内环大小,数值越大内环越小 -->
    android:thickness="4dp"
    android:useLevel="false"> <!-- 必须设置为false,否则环形不显示 -->

    <stroke
        android:width="4dp"
        android:color="@color/grey" /> <!-- 用stroke定义环形的颜色和厚度 -->
</shape>

布局优化建议

原代码用负margin实现控件重叠的方式不够规范,建议用FrameLayout包裹两个控件,通过居中对齐实现重叠效果:

<FrameLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center">

    <View
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:layout_gravity="center"
        android:background="@drawable/progress_bar_background" />

    <ProgressBar
        android:id="@+id/process_loading_circle"
        style="?android:attr/progressBarStyle"
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:layout_gravity="center"
        android:indeterminateTint="@color/limeGreen" />
</FrameLayout>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 10:32:47