我有一个活动,其中有一个 EditText 并且在输入键搜索结果时显示,所以我只想在搜索结果即将显示时关闭键盘以防止用户必须这样做。但是,如果用户想要优化他的搜索,如果他再次点击 EditText,键盘应该会重新打开。
这比我想象的要困难,我一直在搜索并尝试了一些最重要的事情,甚至没有关闭我的 HTC 上的键盘,一种将 InputType 设置为 INPUT_NULL 的方法关闭了键盘,但之后没有打开.
关于如何做到这一点的任何建议?
我有一个活动,其中有一个 EditText 并且在输入键搜索结果时显示,所以我只想在搜索结果即将显示时关闭键盘以防止用户必须这样做。但是,如果用户想要优化他的搜索,如果他再次点击 EditText,键盘应该会重新打开。
这比我想象的要困难,我一直在搜索并尝试了一些最重要的事情,甚至没有关闭我的 HTC 上的键盘,一种将 InputType 设置为 INPUT_NULL 的方法关闭了键盘,但之后没有打开.
关于如何做到这一点的任何建议?
@Override
public boolean onQueryTextSubmit(String query) {
// Your search methods
searchView.clearFocus();
return true;
}
直截了当,干净利落。
这样做的正确方法:
imeOptions
为"actionSearch"
初始化输入和搜索按钮的侦听器(如果提供)
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
private void performSearch() {
searchEditText.clearFocus();
InputMethodManager in = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
in.hideSoftInputFromWindow(searchEditText.getWindowToken(), 0);
... perform search ...
}
我相信这个代码片段会关闭键盘:
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
如果不试试这个:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
让我知道这些是否有效