【问题标题】:Android - How to show a custom keyboardAndroid - 如何显示自定义键盘
【发布时间】:2016-03-15 19:04:14
【问题描述】:

我在我的应用程序中添加了一个自定义键盘。 当使用另一个具有文本输入的应用程序时,它可以正常工作。我已经更改了settings / language and input,使其启用并用作默认值。

我的问题是我不知道如何在我的应用程序中显示它。我有一个使用画布绘制终端屏幕的视图。没有文本输入,但我确实需要显示键盘。

如何强制键盘显示?我看到了几种方法,使用清单,使用输入法管理器等......但在我的情况下没有一个工作。 我必须集中输入以显示键盘吗?我不能只显示它并随时隐藏它吗?

谢谢。

编辑:我设法通过添加文本输入并单击它来显示键盘。但是我仍然不知道如何在没有文本输入的情况下显示它。

【问题讨论】:

    标签: java android keyboard android-input-method


    【解决方案1】:

    你说它已经是默认的了。因此,您可以简单地手动显示:

    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT);
    

    隐藏它:

    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(yourEditText.getWindowToken(), 0);
    

    这样,用户不必点击文本输入来显示键盘。如果这有帮助,请接受。

    编辑

    您还必须请求焦点:

    yourEditText.requestFocus()
    

    【讨论】:

    • 感谢您的帮助,但我尝试了这种方式以及其他几种变体(toggleSoftInput、showSoftInput 等)。它似乎不适用于几个人。
    • @Virus721 我想我有一个适合你的解决方案。尝试添加:yourEditText.requestFocus();。它现在应该可以工作了!
    • 是的,使用请求焦点有效,谢谢。但我还需要添加:dummyTextView.setFocusable(true); dummyTextView.setFocusableInTouchMode(true);,如本答案所述:stackoverflow.com/questions/9311563/… 请将此添加到您的答案中。不幸的是,我无法用我的自定义绘图视图替换文本编辑,或者此代码不再有效。我想我将不得不在某处保留隐藏的输入。这很脏,我很惊讶 android 没有提供一种简单而干净的方法。
    • @Virus721 是的,这是一种糟糕的做法!
    • 如果编辑文本不可见或我们处于横向模式,这也不起作用。
    猜你喜欢
    • 1970-01-01
    • 2017-04-08
    • 2016-04-17
    • 2016-09-14
    • 2013-01-18
    • 2016-04-25
    • 2015-04-08
    • 2014-11-25
    • 1970-01-01
    相关资源
    最近更新 更多