当前位置: 首页 > 知识库问答 >
问题:

检测自定义键盘(IME)Android外部按下的EditText

茅昀
2023-03-14

我正在开发一个内置搜索框的android键盘。我可以检测到用户何时按下我的搜索框,然后将他键入的文本提交到我的搜索框。

问题是我无法检测用户何时按下原始EditText(打开键盘的那个),因为它不是我的视图。

这就是键盘的基本外观:

键盘被蓝色方块包围,我的编辑文本被红色方块包围。

我尝试在我的editText上设置此侦听器,但没有成功:(来源)

editText.setOnFocusChangeListener(new OnFocusChangeListener() {
    @Override
    public void onFocusChange(View view, boolean hasFocus) {
        if (hasFocus) {
            Toast.makeText(getApplicationContext(), "Got the focus", Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(getApplicationContext(), "Lost the focus", Toast.LENGTH_LONG).show();
        }
    }
});

当我按下另一个editText时,没有调用侦听器。可能是因为这不是我服务的一部分。

即使我能检测到我的服务布局之外的点击屏幕,那也太好了。

谢谢你的帮助!

共有1个答案

袁旻
2023-03-14

虽然你的问题很基本,但我想我可以在这里帮助你尝试下面的代码片段,并让我知道它是否适合你。

public void showKeyboard(View view) {
    InputMethodManager myKeyboard = (InputMethodManager) getSystemService(Context
            .INPUT_METHOD_SERVICE);
    myKeyboard.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);

}

public void hideKeyboard() {
    InputMethodManager myKeyboard = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    myKeyboard.hideSoftInputFromWindow(EditText1.getWindowToken(), 0);
}

这也是一个重复的问题,请参见此处:Android:当焦点位于EditText上时自动显示软键盘

在这里发帖之前,请先尝试一下Google,当你等待别人对你的帖子发表评论时,答案就出来了,这会极大地阻碍你的进度:)另外,如果你发布重复的问题,并且没有在帖子上获得足够的投票,堆栈溢出可能会禁止你发帖。

此外,您还可以查看有关此主题的Android开发者文档:https://developer.android.com/training/keyboard-input/visibility

 类似资料:
  • 问题内容: 是否有任何已知的组合上,将给予一个民垫键盘有特殊字符如,,和。我试图允许用户输入一个数字,并且该字段也可以采用上述字符。我尝试了很多,但似乎都没有提供所需的输出。 为此,我需要创建自己的自定义键盘吗?由于我的要求非常特定于某些特殊字符,请不要将此问题标记为重复的问题。提前致谢。 问题答案: 您可以根据需要使用KeyboardView进行自定义。 其中 R.xml.customLayou

  • 问题内容: 我想按一下软键盘上的任何键。我不想在Activity中使用EditView或TextView,必须从Activity内部的扩展View处理该事件。 我只是试过这个: 1)覆盖活动方法。该功能不适用于软键盘,只能捕获很少的硬键盘。 2)创建我的并在我的视图中注册该视图,其中包含已注册并正在运行的。这对于软键盘根本不起作用。 3)覆盖View方法。如果我设置我的OnKeyListener或

  • 正如标题所说,我想检测多个键盘键同时(同时)按下和正在(同时)按下一段时间。我试图在上添加多个事件处理程序,但不起作用: 但是,当用户同时按[]和[]并保持按下时,上面的两个操作必须同时发生,而不仅仅是其中一个。

  • 我想使用hasMany与原始sql外键和本地键之间的关系。我必须根据日期来关联它们,这就是为什么我必须使用原始sql函数作为外键和本地键。 我试图定制hasMany关系,但没有成功。 这有可能吗?

  • 模拟ios5的拨号键盘,带有拨号键,可以调用系统的电话功能进行打电话。只有在真机中才能测试打电话功能。 作者说:修改delegate后,可以自定义电话。 [Code4App.com]

  • 提示 页面模板源码免费开源,在uni-app的插件市场uView的 示例项目 中,在右上角选择"使用 HBuilderX 导入示例项目" 或者 "下载示例项目ZIP", 在HX运行项目即可看到和使用模板。 此为结合了uView的MessageInput 验证码输入及Keyboard 键盘组件的模板, 模仿支付的场景,用户可以根据思路,修改出自己想要的效果。