android - 使用 HoloEveryWhere 单击 ActionBar 上的 SearchView 图标时,如何隐藏子菜单?

标签 android android-actionbar submenu searchview android-holo-everywhere

在我的演示中,搜索 View 和子菜单放在我的操作栏上,如下所示: @覆盖 public boolean onPrepareOptionsMenu(菜单菜单){

    SearchView searchView = new SearchView(getSupportActionBar()
            .getThemedContext());
    searchView.setQueryHint("Search...");
    searchView.setOnQueryTextListener(new OnQueryTextListener() {

        @Override
        public boolean onQueryTextSubmit(String query) {
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {

            if(currentPosition == 0) {
                System.out.println("Now search index 0 data...");
            }else if(currentPosition == 1) {
                System.out.println("Now search index 1 data...");
            }
            return false;
        }
    });

    menu.add(Menu.NONE, 0, 0, "")
            .setIcon(R.drawable.abs__ic_search)
            .setActionView(searchView)
            .setShowAsAction(
                    MenuItem.SHOW_AS_ACTION_IF_ROOM
                            | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);

    SubMenu sub = menu.addSubMenu(Menu.NONE, 1, 1, "").setIcon(
            R.drawable.abs__ic_menu_moreoverflow_holo_dark);
    if(currentPosition == 0) {
        sub.add(0, R.style.Theme_Sherlock, 0, "Mail");
        sub.add(0, R.style.Theme_Sherlock_Light, 0, "IM");
    }else if(currentPosition == 1) {
        sub.add(0, R.style.Theme_Sherlock, 0, "City");
        sub.add(0, R.style.Theme_Sherlock_Light, 0, "Relocate");
    }

    sub.getItem().setShowAsAction(
            MenuItem.SHOW_AS_ACTION_ALWAYS
                    | MenuItem.SHOW_AS_ACTION_WITH_TEXT);

    return super.onPrepareOptionsMenu(menu);
}

如何在使用 HoloEveryWhere 单击 ActionBar 上的 SearchView 图标时隐藏子菜单?

最佳答案

像这样:

menu.add(...)
        ...
        .setOnActionExpandListener(new OnActionExpandListener() {

            @Override
            public boolean onMenuItemActionExpand(MenuItem item) {
                sub.getItem().setVisible(false);
                return true;
            }

            @Override
            public boolean onMenuItemActionCollapse(MenuItem item) {
                sub.getItem().setVisible(true);
                return true;
            }
        })
        ...

虽然我想知道您为什么要创建自己的溢出菜单作为子菜单。为什么不使用默认的溢出功能?

关于android - 使用 HoloEveryWhere 单击 ActionBar 上的 SearchView 图标时,如何隐藏子菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14315056/

相关文章:

android - ExpandableListView 不显示 subview

android - 无法解决 : com. github.PhilJay :MPAndroidChart:v2. 1.4

android - 如何使用 AppCompat 库在 ActionBar 中显示 NavigationDrawer 图标

带操作栏的 Android 全屏 Activity

html - 带有 Css/html 的垂直子菜单下拉菜单

android - 向上滚动不起作用

android - 仅隐藏底部操作栏 Android

Android:在DrawerMenu中扩展子菜单

css - 子菜单项未在完整浏览器中显示 (CSS)

Android 应用程序,与插入 USB 端口的设备通信