我在操作栏中实现了经典搜索功能,但是当我点击搜索菜单按钮时,会出现搜索editText,但我必须点击它进入编辑模式,而大多数应用程序直接输入显示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);
}
此致
答案 0 :(得分:1)
根据Android文档,SearchView具有Edittext行为,因此您不需要强制使用该软键。看来你的问题是它在onOptionItemSelected()中,它应该在onCreateOptionMenu()中。如果你必须,强制的代码低于。仔细看看这篇文章底部的链接。
SHOW_FORCED
完成!
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(mSearchView, InputMethodManager.SHOW_FORCED);
查看class以获取更多信息。另请查看SearchView上的Android Docs。