Jetpack Compose 等同于 InputFilter?

问题描述 投票:0回答:2

我正在寻找 Jetpack Compose TextField 中 EditText 的 InputFilter 的等效方法。

因为我试图阻止用户输入不需要的值,例如

%@*()-
字符。

android kotlin android-jetpack android-jetpack-compose android-jetpack-compose-text
2个回答
8
投票

这里有正则表达式的解决方案:

@Composable
fun FilteredTextField(
    text: String,
    onChanged: (String) -> Unit,
    ignoredRegex: Regex
) {
    TextField(value = text,
        onValueChange = {
            if (!it.contains(ignoredRegex)) onChanged(it)
        }
    )
}

使用:

@Composable
fun FilteredTextFieldDemo() {
    var text by remember { mutableStateOf("") }
    FilteredTextField(
        text = text,
        onChanged = { text = it },
        ignoredRegex = Regex("[%@*()-]")
    )
}

0
投票

如果只想显示numberOnly键盘,我们可以这样做:

TextField(
     value = textState,
     onValueChange = { text ->
         textState = text
     },
     keyboardOptions = KeyboardOptions.Default.copy(
         keyboardType = KeyboardType.NumberPassword
     ),
     visualTransformation = VisualTransformation.None
)
© www.soinside.com 2019 - 2024. All rights reserved.