【问题标题】:How to add a static keyboard in Android?如何在 Android 中添加静态键盘?
【发布时间】:2019-03-27 17:31:28
【问题描述】:

我想为我的应用中的活动添加键盘。我不想要默认的 Android 键盘,一旦用户单击文本字段就会弹出并在用户单击其他地方时隐藏。我想让键盘静态(它可以随时访问并且不会消失)并且在任何设备上都是相同的。

基本上我希望键盘的功能与我发现的这个填字游戏应用程序(Image) 中的功能相似。

我想到的第一个解决方案是完全由我自己制作键盘。基本上是手动添加和硬编码每个按钮。

有没有办法更容易做到这一点?有可用的模板吗?

(我是 Android 的初学者,所以我可能错过了最明显的解决方案)

谢谢。

编辑:我想要实现的不仅是键盘始终保持打开状态,而且我可以轻松控制键盘的大小和位置。我希望它覆盖屏幕的特定区域。

【问题讨论】:

  • 根据您的要求,您可以使用设备键盘,如果用户点击其他地方它不会隐藏

标签: android android-activity input keyboard


【解决方案1】:

您将需要制作自己的键盘布局,但除非它需要是功能齐全的键盘,否则不会太难。将其放在自己的布局 XML 中,每个键都有相应的 ID。

然后您可以在需要包含它的布局中使用<include>。在 Java(或 Kotlin)中,您可以创建一个“帮助器”类,该类获取当前 Activity/Fragment 的根视图,查找键并设置按下键时的侦听器框架。

至于隐藏设备的键盘,请查看答案here

【讨论】:

  • 感谢您的快速回答!我会试一试。我应该如何处理这么多类似的按钮?我必须一个一个地格式化它们还是可以将它们分配给某种“类”?是否可以更改一个键的属性并将其应用于所有其他键?
  • This is a helpful place to start。整个线程值得一读。
【解决方案2】:

将这些方法放入您的活动中。用于打开键盘

  public void openKeyboard() {
    InputMethodManager imm =
            (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    if (imm != null) {
        imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
    }
}

关闭键盘:

public void closeKeyboard(Activity activity) {
    if (activity != null) {
        InputMethodManager inputMethodManager =
                (InputMethodManager) activity.getSystemService(
                        Activity.INPUT_METHOD_SERVICE);
        if (inputMethodManager != null && activity.getCurrentFocus() != null) {
            inputMethodManager.hideSoftInputFromWindow(
                    activity.getCurrentFocus().getWindowToken(), 0);
        }
    }
}

【讨论】:

  • 这不能回答问题。 OP 不是在寻找如何隐藏或显示设备键盘。
  • 这可能是解决方案,因为如果用户单击文本字段以外的其他位置,他将面临键盘消失的问题
  • “在任何设备上都相同。” — 大多数人使用不同的键盘,或者在不同的键盘上使用不同的风格。
猜你喜欢
  • 1970-01-01
  • 2022-01-14
  • 2015-03-30
  • 1970-01-01
  • 1970-01-01
  • 2016-01-13
  • 2017-02-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多