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

Jetpack Compose中PullToRefreshContainer空白灰色圆圈始终显示问题

Jetpack Compose 1.6.4 PullToRefreshContainer 加载/刷新后灰色圆圈持续显示问题

我在使用Jetpack Compose 1.6.4版本时遇到异常:PullToRefreshContainer的空白灰色圆圈在首次加载或刷新完成后始终处于显示状态。

实现代码如下:

val pullRefreshState = rememberPullToRefreshState()

Box(
    modifier = Modifier
        .fillMaxSize()
        .nestedScroll(connection = pullRefreshState.nestedScrollConnection)
) {
    // Another contents

    PullToRefreshContainer(
        modifier = Modifier.align(alignment = Alignment.TopCenter),
        state = pullRefreshState,
    )
}

问题截图:
问题截图

解决思路:

  • 绑定刷新状态到业务逻辑:rememberPullToRefreshState必须传入isRefreshing参数,否则容器无法识别刷新完成的时机。修改状态初始化逻辑:

    val isRefreshing by remember { mutableStateOf(false) }
    val pullRefreshState = rememberPullToRefreshState(isRefreshing = isRefreshing)
    

    在你的刷新任务开始时将isRefreshing设为true,任务结束后设为false,让容器自动隐藏加载圆圈。

  • 确认嵌套滚动的正确应用:nestedScroll修饰符需要作用在内部包含可滚动组件(如LazyColumn)的容器上。如果没有可滚动内容,嵌套滚动机制无法正常触发状态重置,导致加载圆圈一直显示。

  • 排查版本兼容性问题:Jetpack Compose 1.6.x的PullRefresh组件存在已知的状态异常bug,尝试升级到最新稳定版(如1.7.x)或降级到1.5.x版本,验证问题是否解决。

  • 自定义容器可见性逻辑:如果默认容器的状态判断不符合需求,可以手动控制可见性:

    PullToRefreshContainer(
        modifier = Modifier.align(Alignment.TopCenter)
            .visible(isRefreshing || pullRefreshState.progress > 0),
        state = pullRefreshState,
    )
    

    仅在刷新中或下拉过程中显示容器,其他时机自动隐藏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 16:04:53