例如,我在EditText中有以下字符串:
Lorem ipsum dolor sit amet,consectetuer adipiscing elit,sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat
正常行为是,当用户长按虚拟键盘中的退格键时,系统会直接删除每个单词,例如:
Lorem ipsum dolor sit amet,consectetuer adipiscing elit,sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat
变为
Lorem ipsum dolor sit amet,consectetuer adipiscing elit,sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat
我可以在我的应用中阻止此类行为吗?
我试图观察onKeyDown
,onKeyUp
,onKeyLongPress
和onTextChanged
,afterTextChanged
,beforeTextChanged
,但不是找到我可以用来防止这种行为的东西。
答案 0 :(得分:2)
覆盖这只会让用户感到困惑,这是一个坏主意。但是,在Android中键盘的工作原理 - 他们决定显示哪些按钮以及他们为响应用户输入做了什么。没有办法改写这个。如果你不喜欢这种行为,我建议你找一个按你想要的方式工作的键盘。
覆盖onKeyXXX不会起作用,因为这些是物理按钮,并且不会被屏幕键盘生成。
如果你有来覆盖它,你需要实现一个TextWatcher并在afterTextChanged中编辑序列。您需要查找新文本小于旧文本超过1个字符的情况,如果是这样,请将文本替换为旧文本减去1个字符。请注意,根据键盘和Android序列事件的方式,这可能会破坏任何使用自动更正的键盘或任何使用完成文本的键盘。
换句话说 - 不要这样做,它会比它的价值更麻烦,并且会为大多数用户打破。