TextField 和新行的问题

时间:2021-07-13 13:20:44

标签: android text textfield android-jetpack android-jetpack-compose

我正在使用 Jetpack Compose,但我遇到了 TextField 问题: 当我想插入新行时,onValueChange 向我发送了错误的字符串值。

几个步骤来说明:

// Step 1
currentValue : ""
input value : "A"
onValueChange : "A" // OK

// Step 2
currentValue : "A"
input value : "\n"
onValueChange : "A\n" // OK

// Step 3
currentValue : "A\n"
input value : "B"
onValueChange : "AB\n" // Here the "B" isn't inserted at the end, why ?

// Step 4
currentValue : "AB\n"
input value : "C"
onValueChange : "AB\nC" // The "C" is correctly inserted

我使用的是 BasicTextField,但 TextField 也有同样的错误:

var message by remember { mutableStateOf("") }
BasicTextField(
    value = message,
    onValueChange = { message = it },
    textStyle = TextStyle(fontSize = 15.sp),
    decorationBox = { innerTextField ->

        if (message.isEmpty())
            Text(text = "Enter message")

        innerTextField()
    }
)

还有其他人面临这个问题吗?

编辑:找到可能的来源

在我的测试中,我遇到了带有 Android 10 自定义 ROM 的小米 Mi8 的问题,但是对于我的 S21U(Android 11 官方),我没有问题。

可能是因为自定义 ROM 或 Android 10。

EDIT2:错误跟踪

这个问题现在被谷歌知道了,他们正在修复: https://issuetracker.google.com/issues/193457105

1 个答案:

答案 0 :(得分:0)

尝试删除该 decorationBox 参数。以前真的没见过这种行为