无法隐藏 SearchView 的虚拟键盘 iconfiedbydefault(false)
Posted
技术标签:
【中文标题】无法隐藏 SearchView 的虚拟键盘 iconfiedbydefault(false)【英文标题】:Unable to hide the virtual keyboard of SearchView iconfiedbydefault(false) 【发布时间】:2013-04-17 13:46:33 【问题描述】:我有一个搜索视图,默认设置为默认搜索查询扩展,但我不想要虚拟键盘。在下面的代码中,我试图在 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 搜索视图小部件。任何隐藏虚拟键盘的建议。我做错了什么?
【问题讨论】:
【参考方案1】:受到 Parnit 回答的启发,我找到了一种更好的方法,它也有效并且更漂亮:
mSearchView.clearFocus();
【讨论】:
你知道怎么可能再次打开键盘吗?【参考方案2】:编辑:我在顶部添加了更好的解决方案,但也保留了旧答案作为参考。
@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;
);
【讨论】:
尝试了数十种方法后,这对我有用!非常感谢!【参考方案3】:试试
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
【讨论】:
+1。或者如果不需要手动设置键盘隐藏,只需将android:windowSoftInputMode="stateAlwaysHidden"
放在 android manifest 上。【参考方案4】:
在清单中为特定活动添加以下行。
android:windowSoftInputMode="adjustPan|stateHidden"
【讨论】:
adjustPan
在这里是为了什么目的?单独使用stateHidden
还不够吗?
通过使用 adjustPan 当前焦点永远不会被键盘遮挡.. 更多信息请到这里.. developer.android.com/guide/topics/manifest/…【参考方案5】:
简单的解决方案它对我的工作 添加到 XML:
android:focusable="false"
【讨论】:
【参考方案6】:在 Android 清单中:
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;
【讨论】:
【参考方案7】:你只需要使用: "object(edittext, searchview, etc)".clearfocus() ;
在您生成搜索或操作后使用它。示例:在 OnQueryTextListener 方法中,之后我使用搜索。用于搜索视图。
【讨论】:
这对已经提到该功能的其他答案有何改进?以上是关于无法隐藏 SearchView 的虚拟键盘 iconfiedbydefault(false)的主要内容,如果未能解决你的问题,请参考以下文章