使用搜索小部件时无法隐藏键盘

时间:2018-09-26 06:22:35

标签: android

我正在使用搜索窗口小部件在操作栏中的应用中实现搜索界面。活动开始后,即使我尚未与搜索小部件进行交互,键盘也会弹出。因此,为此,我在清单文件 windowSoftInputMode 中的活动标记中添加了该属性,并赋予了 stateHidden stateAlwaysHidden 值,但这没有用。因此,我尝试使用 hideSoftInputFromWindow 方法以编程方式执行此操作,但这也没有用。

即使将属性设置为不显示后,这又会导致弹出键盘的原因是什么?如何解决此问题?请帮忙!

4 个答案:

答案 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()方法。 请注意!