使用 SearchView 在搜索操作栏激活时显示软键盘

Posted

技术标签:

【中文标题】使用 SearchView 在搜索操作栏激活时显示软键盘【英文标题】:Show soft keyboard on search actionbar activation with SearchView 【发布时间】:2012-06-16 10:34:16 【问题描述】:

当我从 ActionBar 激活搜索时,我看到 this question 将焦点设置在 SearchView EditText 上。但是,当它获得焦点时键盘不会出现。不应该吗,因为它只是一个普通的 EditText? (它是普通的 EditText 吗?)在 android SDK 级别 11 上可以看到这种行为。(Samsung Galax Tab 7.7 with stock Android。)

目前,我有一个解决方法,它与我的 Activity 的 onOptionsItemSelected(MenuItem item) 方法挂钩,显示键盘。

    @Override
    public boolean onOptionsItemSelected(MenuItem item) 
        boolean menuSelectionHandeled = super.onOptionsItemSelected(item);
        // menu_search is the id of the menu item in the ActionBar
        if (item.getItemId() == R.id.menu_search) 
               mInputManager.showSoftInput(null, InputMethodManager.SHOW_IMPLICIT);
        
        return menuSelectionHandeled;
    

其中mInputManagerInputMethodManager 的一个实例。

ActionBar 是使用 ActionBarSherlock 构建的,由于目标设备是 Android 3.x,这可能是导致症状的原因吗?根据 ActionBarSherlock 的 FAQ :

Android 3.x(也称为 Honeycomb)上的操作栏没有 在 Android 4.x (Ice Cream) 中实现所有功能 三明治)。为了在所有平台上提供完整的操作栏 API 以及统一所有 Android 版本的样式 使用实现。

【问题讨论】:

不知道这是否真的很重要,但是当我的 xml 文件包含 EditText 时我遇到了问题,如 ActionBarSherlock 的示例文件中所示(即:我无法获得 textchange 等的回调工作)但是当我将其更改为SearchView 并添加了正确的回调时,它才开始按预期工作。也许试试看? 另外,请查看***.com/questions/11011091/… 感谢@Anton 这个问题让我觉得没有办法自动显示键盘。他有和我一样的解决方法。在我的 XML 中,我肯定使用 SearchView。谢谢 查看:***.com/a/39635722/2535875 【参考方案1】:

这应该可行:

SearchView searchView = new SearchView(getContext());
searchView.setInputType(InputType.TYPE_CLASS_TEXT);
searchView.setBackgroundColor(Color.WHITE);

【讨论】:

以上是关于使用 SearchView 在搜索操作栏激活时显示软键盘的主要内容,如果未能解决你的问题,请参考以下文章

如何在导航栏下隐藏搜索栏并在用户下拉表格视图时显示它?

如何删除 Android searchview 左侧的空间(不是操作栏的一部分)?

在 Android 操作栏中设置 SearchView 的样式

如何以编程方式关闭 SearchView?

Android 操作栏 SearchView 作为自动完成?

如何更改SearchView上的默认图标,以便在Android的操作栏中使用?