美文网首页
Kotlin学习笔记——EditText

Kotlin学习笔记——EditText

作者: Jingtianer | 来源:发表于2019-04-03 22:09 被阅读0次

    输入监听器

    方便起见,在activity的内部写一个内部类,用来监听输入

    编写监听器

        inner class EditWatcher : TextWatcher {
            override fun afterTextChanged(s:Editable) {
    
            }
            override fun beforeTextChanged(s:CharSequence, start:Int, count:Int, after:Int) {
    
            }
            override fun onTextChanged(s:CharSequence, start:Int, count:Int, after:Int) {
                
            }
        }
    

    注意

    1. 把Editable直接toString()就是用户当前的输入

    使用监听器

        et.addTextChangedListener(EditWatcher())
    

    效果

    1. 自动隐藏输入法面板

        private inner class EditWatcher(val type:String, val len:Int, val edit:EditText) : TextWatcher {
            override fun afterTextChanged(s:Editable) {
                var str:String = s.toString()
                if (str.indexOf("\n") >= 0 || str.indexOf("\r") >= 0 || str.indexOf(" ") >= 0) {
                    str = str.replace("\r", "").replace("\n", "").replace(" ", "")
                }
                if (str.length > len) {
                    toast("${type}最长${len}位!")
                    edit.setText(str.substring(0, len))
                    //大于len的时候再截取子串
                    val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
                    //软键盘如果已经打开则关闭之
                    if (imm.isActive) {
                        imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS)
                    }
                }
            }
            override fun beforeTextChanged(s:CharSequence, start:Int, count:Int, after:Int) {
    
            }
            override fun onTextChanged(s:CharSequence, start:Int, count:Int, after:Int) {
    
                
            }
        }
    

    相关文章

      网友评论

          本文标题:Kotlin学习笔记——EditText

          本文链接:https://www.haomeiwen.com/subject/gpwtiqtx.html