关于android:用户搜索后隐藏键盘?

Hide keyboard after user searches?

我有一个活动,其中有一个EditText,并在输入键搜索结果显示,所以我只想关闭键盘,当搜索结果即将显示,以防止用户必须这样做。 但是,如果用户想要优化他的搜索,键盘应该打开,如果他再次点击EditText。

这比我想象的要困难得多,我一直在搜索并尝试了一些大多数甚至不关闭我的HTC键盘的东西,一种方法,其中InputType设置为INPUT_NULL关闭键盘,但之后不打开。

有关如何做到这一点的任何建议?


1
2
3
4
5
6
7
@Override
public boolean onQueryTextSubmit(String query) {
    // Your search methods

    searchView.clearFocus();
    return true;
}

直截了当,干净利落。


正确的方法:

  • imeOptions设置为"actionSearch"
  • 初始化输入和搜索按钮的侦听器(如果提供)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    searchEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            if (actionId == EditorInfo.IME_ACTION_SEARCH) {
                performSearch();
                return true;
            }

            return false;
        }
    });
    view.findViewById(R.id.bigSearchBar_button).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            performSearch();
        }
    });
  • 用户单击搜索时隐藏键盘。 要确保在用户最小化和恢复Activity时键盘不显示,您必须从EditText中删除焦点

    1
    2
    3
    4
    5
    6
    private void performSearch() {
        searchEditText.clearFocus();
        InputMethodManager in = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
        in.hideSoftInputFromWindow(searchEditText.getWindowToken(), 0);
        ... perform search ...
    }

  • 我相信这段代码会关闭键盘:

    1
    2
    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);

    如果没试试这个:

    1
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

    让我知道这些是否有效