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

Jetpack Compose如何将自定义Loading composable居中显示在屏幕中央

实现屏幕居中的几种方案

你可以根据实际使用场景选择对应方案:

方案1:全屏居中(最常用)

直接用Box布局包裹加载组件,设置占满全屏+子元素居中对齐即可,不需要额外嵌套Row/Column:

import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier

@Composable
fun Loading() {
    Box(
        modifier = Modifier.fillMaxSize(),
        contentAlignment = Alignment.Center
    ) {
        CircularProgressIndicator()
    }
}

只要这个Loading组件挂载在页面根布局下,就会显示在整个屏幕的正中心。

方案2:在现有父布局内居中

如果你的加载组件需要放在现有Column/Row/Box布局内,不需要占满全屏,可以直接给加载组件添加对齐修饰符:

// 父布局为Column的示例
@Composable
fun PageContent() {
    Column(Modifier.fillMaxSize()) {
        // 页面其他内容
        Text("页面标题")
        
        // 加载控件在Column内水平居中
        CircularProgressIndicator(
            modifier = Modifier.align(Alignment.CenterHorizontally)
        )
        
        // 页面其他内容
        LazyColumn {
            // 列表内容
        }
    }
}

方案3:弹窗形式居中

如果需要加载组件覆盖所有页面内容,不影响现有布局层级,配合Dialog使用即可,Dialog默认内容位置就是屏幕居中:

import androidx.compose.material3.Dialog

@Composable
fun LoadingDialog(isShow: Boolean, onDismiss: () -> Unit = {}) {
    if (isShow) {
        Dialog(onDismissRequest = onDismiss) {
            CircularProgressIndicator()
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:18:03