由于之前没有Java的开发经验,也没学过安卓方面的开发,对于自带的一些方法很不熟悉,现在直接上手kotlin,着实艰辛。最近在琢磨这个editView的字符过滤的方法,在网上看了很多资料,都没移植过来,后来就自己自成一家,搞了一个简单的过滤方法,不知道实用不,贴出来与大家分享。
et_senddata.addTextChangedListener(object :TextWatcher{ private var str:CharSequence?=null private var mcount :Int =0 override fun afterTextChanged(s: Editable?) { } override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { // et_senddata.setText(str!!.toString()) mcount =count } override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { str= s if(s.isNullOrEmpty())return if(Flag_tb_SendStr!!){ return } when(s!![s.length-1]){ in '1'..'9'->{} in 'a'..'f'->{} in 'A'..'F'->{} else ->{ Toast.makeText(this@UserControlUI, "请输入正确的字符:0~9,a~f或者A~F", Toast.LENGTH_SHORT).show() et_senddata.text!!.delete(s.length-1,s.length) } } } })
以上代码是监听了et_senddata这个EditView控件,然后在onTextChanged状态下进行字符过滤,当检测到当前输入的字符不符时将其删除,这里用的方法是et_senddata.text!!.delete(s.length-1,s.length)的delete方法,ago0是元素的起始位置,ag1是结束位置,该方法可以删除一段元素,删除之后,在EditView控件里将不会显示出来,从而达到过滤的效果。
以上只是个人的想法,有不足之处,请各位大神指出,可以+QQ 578218949 交流