【问题标题】:Automatically open/close keyboard using SearchView in Toolbar使用工具栏中的 SearchView 自动打开/关闭键盘
【发布时间】:2015-04-21 08:04:33
【问题描述】:

我在使用工具栏中的搜索视图作为操作栏打开和关闭键盘时遇到很大问题。当我点击搜索按钮时,它会作为一个动作展开并出现编辑文本,但它没有焦点并且它们的键盘没有打开。我必须手动单击编辑文本才能打开键盘。 关闭键盘也是如此。当我点击关闭搜索按钮时,他们的键盘不会关闭。

我确信这在不使用工具栏的情况下已经可以工作......但我无法使用工具栏修复它。 有人有想法吗?

这是我的菜单:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.toolbar.MainActivity" >


<item
    android:id="@+id/action_search"
    android:icon="@drawable/ic_action_search"
    app:showAsAction="ifRoom|collapseActionView"


    app:actionViewClass="android.widget.SearchView"
    android:title="@string/action_search"/>

<item
    android:id="@+id/action_contact"
    android:icon="@drawable/ic_action_settings"
    app:showAsAction="ifRoom"

    android:title="@string/action_settings"/>

这是我的 onCreateOptionsMenu

@Override
public boolean onCreateOptionsMenu(Menu menu) {
   getMenuInflater().inflate(R.menu.main, menu);

    // Get the SearchView and set the searchable configuration
   SearchManager searchManager = (SearchManager)getSystemService(Context.SEARCH_SERVICE);
   searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();

   searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));

   // Do not iconify the widget;expand it by default
   searchView.setIconifiedByDefault(false);

   setSearchIcons();
   return super.onCreateOptionsMenu(menu);
}

感谢您的任何建议。 干杯!

编辑1:

很明显,经过 10 个小时的努力,我提出了这个问题,30 分钟后我找到了解决方案。

这是应用程序:showAsAction="ifRoom|collapseActionView" 折叠动作视图。删除它就可以了。 但现在我有另一个问题。当搜索视图展开时,设置按钮看起来很糟糕。设置按钮是半可见/半切掉。

在 API 21 Nexus 4 Android 5 上,搜索视图会删除设置按钮。 在装有 Android 4.4.2 的 THL 5000 上,搜索视图似乎工作正常,但图标不像 Nexus 上那样是白色的,而是灰色的。 有什么想法吗?

【问题讨论】:

    标签: android keyboard android-actionbar toolbar searchview


    【解决方案1】:

    如果你的 searchView 并不总是处于展开状态,那么你可以试试下面的代码:

    mSearchView.setIconifiedByDefault(true);
    mMenuItem.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
        @Override
        public boolean onMenuItemActionExpand(MenuItem item) {
            // Add code here
            return false;
        }
    
        @Override
        public boolean onMenuItemActionCollapse(MenuItem item) {
            // Add code here
            return false;
        }
    });
    

    点击输入/完成后隐藏键盘:

    @Override public boolean onQueryTextSubmit(String query) {
        mSearchView.clearFocus();
        return true;
    }
    

    【讨论】:

    • 感谢您的回答!好吧,我的 searchView 并不总是展开,只有在单击搜索图标后。我刚刚尝试设置 searchView.setIconifiedByDefault(true) ,现在我的行​​为非常奇怪。如果有一个大的搜索图标,并且通过单击该图标会出现一个较小的搜索图标,然后单击小搜索图标,一切都会按预期工作。所以看来我的搜索功能在另一个按钮后面。
    • 好的。无论如何,我编辑了我的答案。希望它可以帮助某人。
    • 谢谢!我绝对可以利用你的方法。也许你也知道如何解决这个新问题。再次感谢!
    • 您可以尝试将android:orderInCategory="102"添加到menu.xml中的设置项
    • 不幸的是它没有帮助。我试图删除设置按钮的操作,但默认设置按钮似乎覆盖了一半。
    猜你喜欢
    • 2020-11-11
    • 1970-01-01
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    • 2015-11-06
    相关资源
    最近更新 更多