
回复
前言
有时候我们会有一些特殊的需求,需要对输入框进行特殊的处理,比如:
拦截输入内容提交
对于 EditText 的文字监听,我们通常使用的是添加文字变化监听 addTextChangedListener(watcher) ,通过文字变化监听 TextWatcher 对文字作处理,处理后重新设置文字。需要处理死循环的问题(类似递归,要有终止条件)。
其实可以在输入文字提交之前,还未显示到界面时,就对文字进行处理,需要重写方法
创建自己的输入连接(InputConnection),在 commitText() 方法中返回 false,提交的内容将会被拦截。
具体代码见最后。
监听软件盘删除按钮点击事件
对于软键盘删除按键的监听,通常我们使用 setOnKeyListener(l) ,但是在一些非常规特殊情况下不那么好用,比如多行输入时屏蔽换行。
监听输入框文字粘贴、复制、全选等
监听输入框文字粘贴、复制、全选等操作,需要重写 onTextContextMenuItem(id) 方法,通过 id 区分操作,重写对应的逻辑。都有哪些操作,也即都有哪些 id 呢?ctrl + 鼠标左键点击 super.onTextContextMenuItem(id) ,查看源码,找到了以下 id:
由于源码里并没有开放这些 id 常量,所以只能用 android.R.id.copy 这样的 id。
code