我创建了一个自定义的MyEditText - 继承自EditText。我想修改正在显示的文本,因此我创建了一个TextWatcher,并在构造函数中调用addTextChangedListener()将其绑定到MyTextEdit。
它拦截输入正常,除非处理swype键盘。只需使用swype输入,我就可以处理粘贴,也不删除文本(1个或多个字符)。我在TextWatcher中看到的问题是:
任何线索?
如果有帮助,我还会继续“TextView不支持文本选择。操作模式已取消。”尝试选择文字时(长按)。我的小部件是Focusable,可点击(也处于触摸模式),我还实现了返回true的onCheckIsTextEditor()。
答案 0 :(得分:0)
问题在于我创建了自己的可编辑,并将其设置为新文本,而不是操纵我从afterTextChanged(可编辑的新文本)获得的可编辑。
此外,我现在分别在更改之前和之后调用TextView.beginBatchEdit()和TextView.endBatchEdit()。
最后要注意的是,如果使用跨度,请注意不要触摸不属于您的跨距。例如,迭代所有跨度(从跨越继承)并删除它们是一个非常糟糕的主意; - )