【发布时间】:2021-10-25 06:01:29
【问题描述】:
我正在尝试为 TextField 中的最大字符数设置一个限制。 这是我尝试过的:
var text by remember { mutableStateOf("") }
val maxLength = 40
TextField(
value = text,
onValueChange = {
text = it.take(maxLength)
}
)
问题来了:
- 当我超过限制时,整个文本突然被清除。
- 这种情况只发生一次,即当我重新输入并超出限制时,它就会停在那里(这是所需的行为)
- 40 在这里似乎是一个神奇的数字,因为对于 maxLength = 39 或更低,一切正常。当我将限制设置为 40 或更高时,我看到了这种奇怪的行为。 (这个幻数似乎并不取决于文本字段的宽度,因为我尝试了纵向和横向模式,结果是一样的)
如何摆脱这种行为?为 TextField 文本设置最大长度的正确方法是什么?
【问题讨论】:
-
你的代码对我来说很好。您可能遇到过 Compose 错误,report Compose 问题跟踪器,包括您正在使用的 Android 版本、Compose 版本和设备型号。
-
看起来就是这种情况。我在我的模拟器上尝试了这段代码,它在那里运行良好。
标签: android kotlin android-jetpack-compose android-jetpack-compose-text