我在我的操作栏中实现了一个经典的搜索功能,但是当我点击搜索菜单按钮时,会出现搜索编辑文本,但我必须点击它才能进入编辑模式,而大多数应用程序直接进入编辑模式在显示 editText 之后。
如何解决?
我的代码是:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// Place an action bar item for searching.
MenuItem item = menu.add("Search");
item.setIcon(android.R.drawable.ic_menu_search);
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM
| MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
mSearchView = new Fragment_siteManager.MySearchView(getActivity());
mSearchView.setOnQueryTextListener(this);
mSearchView.setOnCloseListener(this);
mSearchView.setIconifiedByDefault(true);
mSearchView.setQueryHint(getString(R.string.label_tvGivePosition));
item.setActionView(mSearchView);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}
编辑
我尝试了以下代码,但它不起作用:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
View view = mSearchView.findFocus();
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(view, InputMethodManager.SHOW_FORCED);
return super.onOptionsItemSelected(item);
}
问候,
最佳答案
根据 Android 文档,SearchView 具有 Edittext 行为,因此您不需要强制软键。您的问题似乎是它在 onOptionItemSelected() 中,而它应该在 onCreateOptionMenu() 中。如果必须,强制执行的代码如下。仔细查看这篇文章底部的链接。
- 获取 InputMethodManager
- 调用显示软键的方法并将搜索 View 和标志传递给它,
SHOW_FORCED
完成!
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(mSearchView, InputMethodManager.SHOW_FORCED);
查看class获取更多信息。另请查看 Android Docs在 SearchView 上。
关于android - 如何在搜索中自动进入编辑模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35044303/