java - 如何从软键盘获取输入文本

标签 java android

我是这样启动软键盘的:

InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

inputMethodManager.toggleSoftInputFromWindow(buttonLayout.getApplicationWindowToken(), InputMethodManager.SHOW_FORCED, 0);

buttonLayout 是我 UI 上的一个简单按钮。
如何提取用户写的内容(不使用 EditText 字段或可能隐藏 EditText)以便用户无法看到或点击它?

最佳答案

如果没有 EditText,您将遇到困难。

InputMethod 需要连接到 View 。无论您使用什么 View ,您都需要覆盖 onCreateInputConnection 以返回自定义 InputConnection 对象,该对象至少实现 commitText(用于文字输入)、deleteSurroundingText (用于删除)和 sendKeyEvent(用于假定您处于哑模式的键盘),以及所有完成功能。输入连接是很复杂的事情,如果你不正确,你会搞砸第三方键盘,如 Swiftkey 和 Swype。我真的不建议这样做。

如果你想这样做,你最好的机会就是声明你的窗口是一个 TYPE_NULL 输入类型。大多数键盘都会 self 愚弄,并假定您在该模式下只接受最简单的命令。但你不能指望它。

我会查看 EditText 类返回的 InputConnection 并尽可能多地复制它。

关于java - 如何从软键盘获取输入文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35567315/

相关文章:

java.lang.ArrayIndexOutOfBoundsException : length=27; index=-1 异常

java - 显式类型参数

java - android开发工具在eclipse kepler和windows 8.1中出现错误

java - 映射两个不同大小的ArrayList

java - Android:即使数据库不为空,游标也始终返回 null

java - 未为类型 View 定义方法 setAlpha(int)

java - 无法序列化包含 orientdb 记录 ID 的映射

android - android 模拟器上的 android 终端模拟器中的 sudo 访问(开发)

java - 在 OnTouch 中更改页面

java - 通过 Retrofit2 上传 Base64 编码图像返回空响应