我可以在安卓系统上打开和关闭软键盘,也可以接受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标志隐藏了与软键盘一起显示的文本编辑框,使其不会覆盖屏幕。主视图现在使用公共布尔值事件( view v,int keyCode,KeyEvent onKey)从软键盘接收按键事件。
发布于 2018-05-31 18:11:20
尝尝这个。
tview.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
tview.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
https://stackoverflow.com/questions/50619761
复制相似问题