我有一个搜索视图,默认情况下设置为默认搜索查询,但我不想要虚拟键盘。在下面的代码中,我试图隐藏 onCreateOptionsMenu 中的键盘,但键盘仍然是可见。
imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
MenuItem item = menu.findItem(R.id.menu_search);
item.expandActionView();
mSearchView = (SearchView) item.getActionView();
mSearchView.setIconifiedByDefault(false);
mSearchView.setQuery(query, true);
imm.hideSoftInputFromWindow(mSearchView.getWindowToken(), 0);
我正在使用sherlock搜索视图小部件。任何隐藏虚拟键盘的建议。我做错了什么?
答案 0 :(得分:14)
受到Parnit答案的启发,我找到了一种更好的方法,它也有效并且更美观:
mSearchView.clearFocus();
答案 1 :(得分:4)
编辑:我在顶部添加了更好的解决方案,但也将旧答案作为参考。
@Override
public boolean onQueryTextSubmit(String query) {
searchView.clearFocus();
return false;
}
原始答案:我使用setOnQueryTextListener编程。当隐藏搜索视图时,键盘会消失,然后当键盘再次可见时,键盘不会弹回。
//set query change listener
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener(){
@Override
public boolean onQueryTextChange(String newText) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onQueryTextSubmit(String query) {
/**
* hides and then unhides search tab to make sure keyboard disappears when query is submitted
*/
searchView.setVisibility(View.INVISIBLE);
searchView.setVisibility(View.VISIBLE);
return false;
}
});
答案 2 :(得分:3)
尝试
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
答案 3 :(得分:1)
在特定活动的清单中添加以下行。
android:windowSoftInputMode="adjustPan|stateHidden"
答案 4 :(得分:1)
简单的解决方案为我的工作 添加到XML:
android:focusable="false"
答案 5 :(得分:0)
在Android Manifest中:
android:windowSoftInputMode="adjustPan|stateHidden"
在课堂上打开和关闭键盘:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action buttons
switch(item.getItemId()) {
case R.id.search:
//TODO Whatever
search.clearFocus();
//Open and close the keyboard
InputMethodManager imm = (InputMethodManager)MyApplication.getAppContext().getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
return true;
答案 6 :(得分:0)
u仅需使用: “ object(edittext,searchview等)”。clearfocus();
在您生成搜索或操作后使用它。示例:在方法OnQueryTextListener中,之后我使用搜索。对于searchview。