2017-08-25 126 views
1

我想隐藏一些菜单项时,搜索视图扩展,所以这是我使用的代码:的Android搜索查看不工作()

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    menu.findItem(R.id.action_refresh).setVisible(!isSearchOpen) 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    MenuItem searchMenuItem = menu.findItem(R.id.action_search) 
    SearchView searchView = searchMenuItem.getMenu(); 

    searchView.setOnQueryTextListener(this); 

    MenuItemCompat.setOnActionExpandListener(searchMenuItem, new MenuItemCompat.OnActionExpandListener() { 
     @Override 
     public boolean onMenuItemActionCollapse(MenuItem item) { 
      isSearchOpen = true; 
      invalidateOptionsMenu(); 

      return true; 
     } 

     @Override 
     public boolean onMenuItemActionExpand(MenuItem item) { 
      isSearchOpen = false; 
      invalidateOptionsMenu(); 
      return true; 
     } 
    }); 
} 

下面这段代码如预期,除了一期工程:当我点击搜索按钮时,SearchView不会出现。我找不出什么问题。我搜索了在堆栈溢出类似的问题,但我没有找到固定的问题的任何答案,所以任何帮助将受到欢迎

回答

2

您可以试试这个方式隐藏和显示其他选项菜单: -

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.search_menu, menu); 
    final MenuItem delMenu = menu.findItem(R.id.action_delete); 
    final MenuItem editMenu = menu.findItem(R.id.action_edit); 
    MenuItem searchMenu = menu.findItem(R.id.action_search); 
    SearchView searchView = (SearchView) searchMenu.getActionView(); 

    searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() { 
     @Override 
     public void onFocusChange(View view, boolean b) { 
      if(b) { 
       delMenu.setVisible(false); 
       editMenu.setVisible(false); 
      } 
     } 
    }); 
    searchView.setOnCloseListener(new SearchView.OnCloseListener() { 
     @Override 
     public boolean onClose() { 
      delMenu.setVisible(true); 
      editMenu.setVisible(true); 
      return false; 
     } 
    }); 
    return true; 
} 
+0

谢谢。这工作完美 –