kotlin Jetpack Compose是否等同于InputFilter?

s3fp2yjn  于 2023-03-30  发布在  Kotlin
关注(0)|答案(2)|浏览(155)

我在Jetpack Compose TextField中寻找EditText的InputFilter的等效方法。
因为我试图防止用户输入不需要的值,例如%@*()-字符。

dly7yett

dly7yett1#

这里有一个Regex的解决方案:

@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("[%@*()-]")
    )
}
piwo6bdm

piwo6bdm2#

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

TextField(
     value = textState,
     onValueChange = { text ->
         textState = text
     },
     keyboardOptions = KeyboardOptions.Default.copy(
         keyboardType = KeyboardType.NumberPassword
     ),
     visualTransformation = VisualTransformation.None
)

相关问题