我想捕捉编辑文本粘贴事件,与上下文菜单,我可以能够捕捉编辑文本粘贴事件如下。
etMobileNumber.customInsertionActionModeCallback = object : ActionMode.Callback {
override fun onActionItemClicked(mode: ActionMode?, item: MenuItem?): Boolean {
if(item?.itemId == android.R.id.paste){
//log.d(“pastevent”)
}
字符串
但是如果从键盘剪贴板粘贴的文本没有触发这个事件。如何触发这个事件?
1条答案
按热度按时间jhdbpxl91#
今天下午,当一位客户提出粘贴键盘操作没有将整个
ClipData
粘贴到我的EditTexts
中时,我一直在为您的问题而挣扎。我实现了一个2FA代码输入,每个6位数字有一个唯一的
EditText
,以适应设计的UI,所以我将每个EditText
限制为1个字符。但是键盘粘贴操作只将第一个字符设置到当前焦点
EditText
中,正如我在TextWatcher
中看到的那样。在调用堆栈中向上,我看到操作来自
InputConnection
。因此,我所做的是创建我自己的EditText
,覆盖InputConnection onCreateInputConnection(EditorInfo)
方法以返回我自己的InputConnectionWrapper
,如下所示:最后,请记住,我们应该使用Receive rich content Unified API,并以下面的代码结尾:
但我不明白为什么键盘粘贴操作的处理方式不一样...
希望对大家有所帮助:)