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

LazyColumn底部TextField点击后软键盘弹出即消失问题求助

问题根因

这个是Jetpack Compose 1.0.x版本的已知缺陷:当windowSoftInputMode设置为adjustResize时,软键盘弹出触发窗口尺寸重算,Scaffold传递给内容区域的内边距会同步更新,此时LazyColumn发生重排,重排过程中底部获得焦点的TextField会被暂时移出组合项,触发焦点丢失,系统就会自动收起软键盘,等重排完成TextField重新加入组合时,不会自动恢复焦点,就出现了软键盘闪一下消失的现象。

解决方案

方案1:升级Compose版本(推荐)

该问题在Compose 1.1.0及以上版本已经被官方修复,只需要将项目中Compose相关依赖的版本升级到1.1.0或更高版本即可直接解决,不需要修改业务代码。

方案2:低版本兼容临时方案

如果暂时不能升级Compose版本,可以通过以下修改解决:

  • 给Scaffold的内容区域添加Modifier.imePadding(),同时调整Insets适配逻辑:
@Composable
fun Greeting() {
    Scaffold(
        topBar = {
            TopAppBar(title = { Text(text = "Some title") })
        }
    ) { innerPadding ->
        val focusManager = LocalFocusManager.current
        LazyColumn(
            contentPadding = PaddingValues(
                top = innerPadding.calculateTopPadding(),
                bottom = 16.dp,
                start = 16.dp,
                end = 16.dp
            ),
            verticalArrangement = Arrangement.spacedBy(space = 16.dp),
            modifier = Modifier.imePadding() // 关键:添加输入法内边距适配
        ) {
            items(count = 20) { index ->
                val (value, onValueChange) = rememberSaveable { mutableStateOf("Some value $index") }
                TextField(
                    value = value,
                    onValueChange = onValueChange,
                    modifier = Modifier.fillMaxWidth(),
                    label = { Text(text = "Some label $index") },
                    keyboardOptions = KeyboardOptions(imeAction = ImeAction.Next),
                    keyboardActions = KeyboardActions(onNext = {
                        if (!focusManager.moveFocus(FocusDirection.Down))
                            focusManager.clearFocus()
                    }),
                    singleLine = true
                )
            }
        }
    }
}
  • 同时需要在对应Activity的onCreate方法中添加如下代码,关闭默认的系统窗口适配:
WindowCompat.setDecorFitsSystemWindows(window, false)
  • Manifest文件中保持windowSoftInputMode="adjustResize"配置即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:54:01