问题描述
我正在开发一个带有搜索框的android键盘。 我可以检测出用户何时按下我的搜索框,然后将他键入的文本提交到我的搜索框。
问题是我无法设法检测用户何时按下原始EditText(打开键盘的那个),因为它不是我的视图。
这基本上是键盘的外观:
键盘被蓝色方框包围,我的编辑文本被红色方框包围。
我尝试在我的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