分析原因
由于表情是特殊字符,长度为2,网上的方法大概都是这样
val index
= dataBinding
.editText
.selectionStart
if(index
> 0) {
val editable
: Editable
= dataBinding
.editText
.editableText
editable
.delete(index
- 1, index
)
}
这样删除了一个字符,然后会出现一个类似问号的字符
解决办法
开始也尝试判断是否为表情,但是太麻烦了,然后测试在键盘上点击回退是不会出现这种情况的,心想可不可以调用键盘的删除方法呢,然后就在网上看到了这篇文章,在此感谢作者原文链接
最后使用如下:
val keyCode
= KeyEvent
.KEYCODE_DEL
val keyEventDown
= KeyEvent(KeyEvent
.ACTION_DOWN
, keyCode
)
val keyEventUp
= KeyEvent(KeyEvent
.ACTION_UP
, keyCode
)
dataBinding
.editText
.onKeyDown(keyCode
, keyEventDown
)
dataBinding
.editText
.onKeyUp(keyCode
, keyEventUp
)
结尾
感谢原作者提供的方法。