【问题标题】:Need soft keyboard to feed TextView, but I don't want the input field on-screen需要软键盘来输入 TextView,但我不希望屏幕上的输入字段
【发布时间】: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) 从软键盘接收按键事件。

【问题讨论】:

标签: java android user-interface


【解决方案1】:

试试这个。

tview.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
tview.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 1970-01-01
    相关资源
    最近更新 更多