1

我正在尝试TextField在 Jetpack Compose 中创建一个供用户输入他们的名字和姓氏的方法。

有没有办法只允许[a-zA-Z\s]输入字母和空格()?我已经尝试了所有可用的选项,包括KeyboardType.Text, KeyboardType.Ascii, KeyboardType.Uri,但它们都显示数字!

我错过了一些明显的东西吗?老实说,我有点震惊谷歌没有开箱即用地提供这个选项。

4

2 回答 2

1

尝试这个:

val pattern = remember { Regex("[a-zA-z\\s]*") }
var text by remember { mutableStateOf("") }

TextField(
    value = text,
    onValueChange = {
        if (it.matches(pattern)) {
            text = it
        }
    }
)
于 2022-01-02T09:42:07.277 回答
0

在 Android 中,无法显示仅包含字母的键盘(并且与撰写无关)。键盘应用程序也不支持它。

还有其他类型的键盘(如数字键盘),但键盘的视图仍由键盘应用程序控制。

最好根据所需的标准过滤给定的输入。例如:

onValueChange = {
    text = it.letters()
}

private fun String.letters() = filter { it.isLetter() }
于 2022-01-06T14:55:17.900 回答