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

Jetpack Compose中关闭ModalBottomSheetLayout时隐藏软键盘的方法

解决Jetpack Compose中ModalBottomSheetLayout关闭时软键盘未自动收起的问题

在Compose中,可通过LocalSoftwareKeyboardController控制软键盘显隐,配合监听底部弹窗状态变化,就能实现弹窗消失时自动收起软键盘的效果。

解决步骤:

  • 通过LocalSoftwareKeyboardController.current获取软键盘控制器实例
  • 使用LaunchedEffect监听ModalBottomSheetState的状态变化,当弹窗状态变为Hidden时,调用控制器的hide()方法收起软键盘

修改后的完整代码:

@OptIn(ExperimentalMaterialApi::class)
@Composable
fun ModalBottomSheetSample() {
    val state = rememberModalBottomSheetState(initialValue = ModalBottomSheetValue.Hidden)
    val scope = rememberCoroutineScope()
    val keyboardController = LocalSoftwareKeyboardController.current

    // 监听弹窗状态变化,触发软键盘隐藏
    LaunchedEffect(state.currentValue) {
        if (state.currentValue == ModalBottomSheetValue.Hidden) {
            keyboardController?.hide()
        }
    }

    BackHandler(state.isVisible) {
        scope.launch { state.hide() }
    }

    ModalBottomSheetLayout(
        sheetState = state,
        sheetContent = {
            TextField(
                value = "",
                onValueChange = {},
                placeholder = { Text(text = "Search") },
                modifier = Modifier
                    .padding(10.dp)
                    .fillMaxWidth()
            )

            LazyColumn {
                items(50) { index ->
                    Text(
                        text = "Item $index",
                        modifier = Modifier.padding(16.dp)
                    )
                }
            }
        }
    ) {
        Button(onClick = { scope.launch { state.show() } }) {
            Text("Click to show sheet")
        }
    }
}

关键说明:

  • LocalSoftwareKeyboardController是Compose专属的软键盘控制API,替代了传统Android中的InputMethodManager
  • LaunchedEffect会在state.currentValue变更时执行逻辑,确保弹窗关闭的时机精准触发软键盘隐藏
  • 采用keyboardController?.hide()的空安全调用,避免控制器为空时出现异常

内容的提问来源于stack exchange,提问作者SURYA S R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 13:20:29