检测在自定义键盘IMEAndroid外部按下的EditText

问题描述

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

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

这基本上是键盘的外观:

keyboard

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

我尝试在我的editText上设置此侦听器,但没有运气:(source

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时,没有调用侦听器。可能是因为它不是我服务的一部分。

即使我能找到一些方法来检测服务布局之外的屏幕点击,也很棒。

感谢您的帮助!

解决方法

尽管您的问题很基本,但我想我可以在下面的代码段中尝试一下,让我知道它是否对您有用。

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: show soft keyboard automatically when focus is on an EditText

在尝试在此处发布问题之前,请先尝试使用ol'Google,它可以大大阻止您的进度,而当您等待答案出现时,在等待其他人对您的信息发表评论时:)此外,如果您重复提出问题并执行此操作,请注意没有对您的帖子进行足够的投票,Stack Overflow会禁止您发布帖子。

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