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

Jetpack Compose中SnackBar未显示关闭按钮问题求助

解决Jetpack Compose Snackbar不显示关闭按钮的问题

默认情况下,Jetpack Compose的Snackbar只有在指定action参数时才会显示右侧操作按钮(包括关闭按钮)。你当前的代码仅传入了message和duration,因此只会展示消息文本。

要调出关闭按钮,只需在showSnackbar方法中添加actionLabel参数并处理点击逻辑:

修改后的代码示例

val snackbarHostState = remember { SnackbarHostState() }
SnackbarHost(hostState = snackbarHostState)

uiState.toastMessage?.let {
    val message = stringResource(it)
    val closeText = stringResource(R.string.close) // 替换为你的关闭文本资源
    LaunchedEffect(key1 = message) {
        val result = snackbarHostState.showSnackbar(
            message = message,
            actionLabel = closeText,
            duration = SnackbarDuration.Indefinite
        )
        // 点击关闭按钮后清空消息状态
        if (result == SnackbarResult.ActionPerformed) {
            vm.toastMessage(null)
        }
    }
}

额外说明

如果需要把关闭按钮换成X图标而非文本,可以自定义SnackbarHost的布局:

SnackbarHost(hostState = snackbarHostState) { snackbarData ->
    Snackbar(
        action = {
            IconButton(onClick = { snackbarData.performAction() }) {
                Icon(Icons.Filled.Close, contentDescription = "关闭")
            }
        }
    ) {
        Text(snackbarData.message)
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 06:15:54