安卓Toolbar对menu进行动态加载

类似于微信滑动ViewPager或者底部TabLayout切换时对Toolbar的Menu动态加载

/*onCreateOptionsMenu只会执行一次,他只会在MENU显示之前,去做一次!!!之后就不再去执行
      onPrepareOptionsMenu 每次在display menu之前,都会去执行
      重写onPrepareOptionsMenu(Menu menu)实现对Toolbar的动态加载
      !!!每次调用onPrepareOptionsMenu()的时候需要首先调用menu.clear()清除一下之前的menu数据,如果不清除的话,之前的menu数据不会被释放,造成内存泄漏!!!
    */
    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
    
    
        // 动态设置ToolBar状态
        switch (mVp_main.getCurrentItem()) {
    
    
            case 0:
                menu.findItem(R.id.search_button).setVisible(true);
                menu.findItem(R.id.scan_button).setVisible(true);
                menu.findItem(R.id.setting_button).setVisible(false);
                break;
            case 1:
                menu.findItem(R.id.search_button).setVisible(false);
                menu.findItem(R.id.scan_button).setVisible(false);
                menu.findItem(R.id.setting_button).setVisible(false);
                break;
            case 2:
                menu.findItem(R.id.search_button).setVisible(false);
                menu.findItem(R.id.scan_button).setVisible(false);
                menu.findItem(R.id.setting_button).setVisible(true);
                break;
        }
        return super.onPrepareOptionsMenu(menu);
    }
重写onPrepareOptionsMenu(Menu menu)实现对Toolbar的动态加载
每次调用onPrepareOptionsMenu()的时候需要首先调用menu.clear()清除一下之前的menu数据。
如果不清除的话,之前的menu数据不会被释放,造成内存泄漏。
设置menu.findItem(R.id.yourId).setVisable(/true/false)控制item的可见性。

重写 onPrepareOptionsMenu(Menu menu)
menu.findItem(R.id.yourId).setVisable(/true/false)

猜你喜欢

转载自blog.csdn.net/xu331700/article/details/113101377