100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > android EditText限制输入框只能输入某些特殊字符 汉字 数字 英文字母等

android EditText限制输入框只能输入某些特殊字符 汉字 数字 英文字母等

时间:2020-07-31 18:53:20

相关推荐

android EditText限制输入框只能输入某些特殊字符 汉字 数字 英文字母等

android EditText限制输入框只能输入某些特殊字符、汉字、数字、英文字母等

方法一:在EditText里面设置属性digits,其内容为可以输入的符号,其他的符号不可输入(不能设置中文)

<EditTextandroid:id="@+id/editMoneyValue"android:layout_width="0dp"android:layout_height="wrap_content"android:digits="12435643asdlfj"/>

方法二:正则表达式

class RegexFilter(private val regex: Regex, private val max: Int): InputFilter{override fun filter(source: CharSequence, start: Int, end: Int, dest: Spanned, dstart: Int,dend: Int): CharSequence? {if (source.any { !(it == '.' || it in '0'..'9') }) {return null}val keep = min(max - (dest.length - (dend - dstart)), end - start)val result = StringBuilder(dest).replace(dstart, dend, source.substring(start, start + max(keep, 0)))return when {keep <= 0 -> ""dest.isEmpty() && source.toString() == "." -> "0."else -> {when {regex.matches(result) -> nullelse -> dest.subSequence(dstart, dend)}}}}}

调用方式:

editDebtValue.filters = arrayOf(RegexFilter("[\\d]{0,12}?(\\.[\\d]{0,2}?)?".toRegex(), 15))

效果:只能输入两位小数和12位整数

方法三:自定义筛选器

/*** 默认可以输入字母、汉字、数字以及()()..·等符号,s为筛选条件*/class OppositePersonalFilter(val s : String = "[a-zA-Z|\u4e00-\u9fa5()()..·]+") : InputFilter{override fun filter(source: CharSequence?, start: Int, end: Int, dest: Spanned?, dstart: Int, dend: Int): CharSequence? {val p = pile(s)val m = p.matcher(source.toString())for (i in start until end) {val charGet = source?.get(i)if (!Character.isLetterOrDigit(charGet!!)&& !m.matches()) {return ""}}return null}}

调用方式:

editMoneyValue.apply {filters = arrayOf(OppositePersonalFilter(), InputFilter.LengthFilter(50))}

效果:只能输入中文、英文和几个设定的特殊字符----()()..·,相当于白名单,也可以转换筛选条件(if (!Character.isLetterOrDigit(charGet!!)&& !m.matches()))达到黑名单效果。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。