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

Jetpack Compose中TextField键盘Done按钮未正常显示问题求助

问题解决方法

你的问题根源很明确:自定义的EditNumberField组件里,内部TextField硬编码了固定的keyboardOptions,完全没用到外部传入的参数。不管你调用组件时传什么imeAction,最终都会被覆盖成ImeAction.Next,这就是第二个输入框始终显示Next按钮的原因。

修复代码

只需要把EditNumberField里TextField的keyboardOptions替换成传入的参数就行,顺便还能把之前没传递的modifier也补上(不然你调用时设置的padding、fillMaxWidth都不会生效):

@Composable
fun EditNumberField(
    value: String,
    onValueChange: (String) -> Unit,
    @StringRes label: Int,
    keyboardOptions: KeyboardOptions,
    modifier: Modifier = Modifier,
) {
    TextField(
        value = value,
        onValueChange = onValueChange,
        modifier = modifier,
        label = { Text(stringResource(label)) },
        singleLine = true,
        keyboardOptions = keyboardOptions, // 用传入的参数替代硬编码内容
    )
}

修改完成后,第二个输入框设置的imeAction = ImeAction.Done就能正常生效,键盘右下角会显示Done按钮。

内容的提问来源于stack exchange,提问作者황서영

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 05:25:04