我正在使用搜索窗口小部件在操作栏中的应用中实现搜索界面。活动开始后,即使我尚未与搜索小部件进行交互,键盘也会弹出。因此,为此,我在清单文件 windowSoftInputMode 中的活动标记中添加了该属性,并赋予了 stateHidden 或 stateAlwaysHidden 值,但这没有用。因此,我尝试使用 hideSoftInputFromWindow 方法以编程方式执行此操作,但这也没有用。
即使将属性设置为不显示后,这又会导致弹出键盘的原因是什么?如何解决此问题?请帮忙!
答案 0 :(得分:1)
尝试使用此功能显示或隐藏键盘:
/**
* Hides the soft keyboard
*/
public void hideSoftKeyboard() {
if(getCurrentFocus()!=null) {
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),
0);
}
}
/**
* Shows the soft keyboard
*/
public void showSoftKeyboard(View view) {
InputMethodManager inputMethodManager = (InputMethodManager)
getSystemService(INPUT_METHOD_SERVICE);
view.requestFocus();
inputMethodManager.showSoftInput(view, 0);
}
答案 1 :(得分:1)
仅在加载该屏幕时第一次将焦点设置为false。默认情况下,加载屏幕时,焦点会移至第一个edittext,然后出现Keyboard。
view.setFocusable(false);
InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
并在该视图的clickListener上使该视图成为焦点。通过使用 view.requestFocus();
答案 2 :(得分:0)
您可以尝试将焦点放在活动的任何其他视图上,例如:
view.requestFocus();
答案 3 :(得分:0)
我发现了问题并解决了问题。我正在使用android.widget.SearchView
,并将其更改为 android.support.v7.widget.SearchView
,此后,我什至无需在清单或windowSoftInputMode
中使用hideSoftInputFromWindow()
方法。 请注意!