更新EditText内容而无需重置输入法状态

时间:2019-01-07 15:48:50

标签: android android-edittext

嗯,标题听起来很复杂,但事实并非如此。 我只想更新EditText文本而不通知输入方法。我正在使用editText.setSelection(getCursor);,但是,例如,如果我在特殊字符菜单中并且写了一些东西,键盘会跳回普通字符(a-z)。如果没有setSelection,我可以继续输入数字和特殊字符。有没有解决此问题的方法?

1 个答案:

答案 0 :(得分:1)

您想要的是“恢复键盘状态(无论是表情符号还是上次选择的语言),但是很遗憾,不可能

  

此问题是否有解决方法?

并非如此,但是您可以做的是prepare a custom emoji keyboard并以编程方式打开。但是这种方法也存在漏洞,您将无法跟踪用户当前对其键盘的选择。我的意思是,您将不知道用户选择了emojiKeyboard还是normalKeyboard,并且最终每次都会打开emojiKeyboard。 但是,您可以做的是检查用户在editText内最后输入的内容,然后打开自己的emojiKeyboard,但又一次,用户切换了他/她的键盘样式是什么?

[编辑] (回答评论中的问题)

  

为什么活动不能保持键盘状态?

因为键盘开发人员没有提供任何回调,加上键盘是某种第三方应用程序,并且可能因设备而异,因此不可行

  

此外,如何使用Editable实例扩展文本。如果我仅使用现有文本,活动会保持键盘状态吗?

活动只会保持状态