【发布时间】:2018-05-31 08:19:16
【问题描述】:
我能够在 Android 上打开和关闭软键盘并接受文本输入到 TextView。一切正常。问题是,我不想真正看到占据整个屏幕的键盘上方的文本输入字段。我已将 TextView 的输入类型设置为 InputType.TYPE_NULL,它隐藏了文本字段并且只显示键盘,但是当我这样做时它不接受来自键盘的输入:
//doesn't show text field above soft
//keyboard, but also doesn't take input
tview.setInputType(InputType.TYPE_NULL);
我似乎无法弄清楚如何禁用文本字段。我只想要键盘,因为我需要在用户键入时在 UI 中显示内容,而文本输入框不会覆盖整个屏幕。
更新:原来我可以将软键盘的键输入直接发送到非 TextView。 换句话说,可以将软键盘输入发送到 View 的任何子类,它不需要专门处理文本或文本编辑。这个答案解释了它:https://stackoverflow.com/a/7386854/420163
我修改了 onCreateInputConnection(它是 View 类的一部分)来做到这一点:
@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
//Log.d(TAG, "onCreateInputConnection");
BaseInputConnection b = new BaseInputConnection(this, false);
outAttrs.actionLabel = null;
outAttrs.inputType = InputType.TYPE_NULL;
outAttrs.imeOptions = EditorInfo.IME_FLAG_FORCE_ASCII|EditorInfo.IME_FLAG_NO_FULLSCREEN|EditorInfo.IME_FLAG_NO_EXTRACT_UI;
return b;
}
EditorInfo.IME_FLAG_NO_FULLSCREEN|EditorInfo.IME_FLAG_NO_EXTRACT_UI 标志隐藏了使用软键盘显示的文本编辑框,并防止其覆盖屏幕。主视图现在使用 public boolean onKey(View v, int keyCode, KeyEvent event) 从软键盘接收按键事件。
【问题讨论】:
-
你能试试这个吗?
tview.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
标签: java android user-interface