android - 如何在搜索中自动进入编辑模式?

标签 android

我在我的操作栏中实现了一个经典的搜索功能,但是当我点击搜索菜单按钮时,会出现搜索编辑文本,但我必须点击它才能进入编辑模式,而大多数应用程序直接进入编辑模式在显示 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() 中。如果必须,强制执行的代码如下。仔细查看这篇文章底部的链接。

  1. 获取 InputMethodManager
  2. 调用显示软键的方法并将搜索 View 和标志传递给它,SHOW_FORCED
  3. 完成!

    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/

相关文章:

Android LocationClient onDisconnect 不会被调用

android - Onclick 时 Google map 崩溃

java - 事件未显示在 Android 设备日历上

android - 单击按钮时调用邮件客户端

java - doInBackground 完成后 AsyncTask 不更新 UI

android - R类中同一个资源生成不同的ID

android - 如何取消一个 AlarmManager

android - 三星 s3 在捕获图像后不会将图像数据返回到 URI,而在所有其他设备上,它工作正常

android - 为 Android 构建内核模块

java - 延迟对话 Java