Lee*_*eem 11 android android-edittext
我有一个EditText字段,变量名称valueInputField.
我听文本输入更改,我想要实现的是在输入过程中,当输入格式与正则表达式不匹配时,我想停止显示更多输入,但保持字段集中并且用户能够键入键盘仍然只是没有真正的效果将采取该领域.
@OnTextChanged(R.id.value_input)
protected void onTextChanged(CharSequence charSequence) {
String inputChars = charSequence.toString().trim();
// if doesn't match regular expression, stop showing more inputs
if (!inputChars.matches(MY_REGEXP)) {
// this doesn't achieve what I need.
valueInputField.setInputType(0)
}
}
Run Code Online (Sandbox Code Playgroud)
我试过上面的方法,它不起作用.如何实现我的需求?
您必须将 InputFilter 添加到您的 textView 中:
这是一个例子:
editText.filters = arrayOf(object: InputFilter {
override fun filter(source: CharSequence?, start: Int, end: Int, dest: Spanned?, dstart: Int, dend: Int): CharSequence {
if (Regex("[0-9]*").matches(source!!)) {
return source
} else {
return source.subSequence(start, end-1)
}
}
})
Run Code Online (Sandbox Code Playgroud)
每次调用 editText 中的输入时都会调用此过滤器方法。当源与正则表达式匹配时,您可以返回源,否则,您可以返回源的子序列,而不插入最后一个字符。
代码示例是 Kotlin 语言,翻译不会给您带来任何问题:)
| 归档时间: |
|
| 查看次数: |
342 次 |
| 最近记录: |