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; } |
直截了当,干净利落。
正确的方法:
初始化输入和搜索按钮的侦听器(如果提供)
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(); } }); |
用户单击搜索时隐藏键盘。 要确保在用户最小化和恢复
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); |
让我知道这些是否有效