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

Jetpack Compose:OutlinedTextField获焦点后软键盘不弹出问题

问题解决:Jetpack Compose OutlinedTextField获焦点但不唤起键盘(API≥33/SDK35)

问题现象

编程触发OutlinedTextField获取焦点时(调用FocusRequester.requestFocus()或通过光标键移动焦点),输入框仅显示已聚焦状态,但软件键盘始终不弹出;仅手动点击输入区域才能正常唤起键盘。此前的延迟200ms等临时方案在API≥33、SDK35环境下均无效。

问题根源

代码中给OutlinedTextField额外添加了.focusable()修饰符:

.focusable(), // <== 问题所在

OutlinedTextField作为输入组件,内部已实现完整的可聚焦逻辑,包含唤起键盘的触发机制。手动添加.focusable()会覆盖组件默认的聚焦行为,导致系统无法识别这是需要唤起键盘的输入焦点事件。

解决方案

直接移除.focusable()修饰符,保留focusRequester和onFocusChanged即可。修改后的OutlinedTextField代码如下:

OutlinedTextField(
    modifier = Modifier
        .focusRequester(myFocusRequester)
        .onFocusChanged { color = if (it.isFocused) Red else Green },
    value = myText,
    onValueChange = { myText = it },
)

修改后,调用myFocusRequester.requestFocus()或通过光标键移动焦点时,输入框会正常获取焦点并自动唤起软件键盘,无需额外延迟或复杂逻辑。

验证说明

移除.focusable()后,组件会使用自身默认的聚焦处理逻辑,该逻辑在API33+、SDK35环境下完全兼容,能够正确触发系统的键盘唤起事件,同时保留焦点状态监听功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 19:53:10