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

Jetpack Compose中TextField extract模式输入字符无法显示问题咨询

问题结论

该问题是Jetpack Compose的官方已知Bug,与你的代码实现无关。

根本原因

TextField组件在软键盘触发的全屏extract模式下,输入浮层未正确同步绑定的状态值。即使onValueChange回调已经正确更新了emailField的状态,extract模式的浮层也不会监听该状态变化触发刷新,只有退出软键盘、TextField回到常规显示状态触发重组时,才会读取最新的状态值完成渲染。

解决方案

可选择两种方式处理:

  • 升级Compose版本到1.3.0及以上:官方已在1.3.0版本中修复了extract模式下的状态同步问题,升级后无需改动现有代码即可恢复正常。
  • 临时禁用extract模式:如果暂时无法升级Compose版本,可给TextField添加配置直接关闭extract模式规避问题,修改后的代码如下:
val emailField: MutableState<String> = remember { mutableStateOf("Hi stackoverflow") }

Column(Modifier.padding(12.dp)) {
    TextField(
        modifier = Modifier.fillMaxWidth(),
        value = emailField.value,
        onValueChange = {
            emailField.value = it
        },
        singleLine = true,
        isError = emailError,
        leadingIcon = { Icon(Icons.Filled.Email, contentDescription = "") },
        keyboardOptions = KeyboardOptions(
            imeAction = ImeAction.Next
        ),
        keyboardActions = KeyboardActions(
            onNext = {
                focusRequester.requestFocus()
            }
        ),
        // 新增配置关闭extract模式
        textStyle = LocalTextStyle.current.copy(
            platformStyle = PlatformTextStyle(
                isExtractModeEnabled = false
            )
        ),
        label = {
            Text(stringResource(R.string.settings_authenticate_email_address))
        }
    )
}
补充说明

原有代码逻辑完全符合Compose开发规范,状态绑定、输入回调的写法均无问题,无需调整业务逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:57:01