ToolBar点击切换menu文字

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zqd1984309864/article/details/78135363

先来看一下效果:


有两个比较重要的方法,onCreatOptionMenu创建选项菜单,onPrepareOptionsMenu用于更新菜单,

相关代码如下:

 /**
     * 创建选项菜单
     *
     * @param menu
     * @return
     */
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        Log.i("zqd", "onCreateOptionsMenu");
        getMenuInflater().inflate(R.menu.my_menu, menu);
        return true;
    }

    /**
     * 准备更新菜单
     *
     * @param menu
     * @return
     */
    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        Log.i("zqd", "onPrepareOptionsMenu");
        switch (currentMenu) {
            case 0:
                menu.findItem(R.id.action_choose).setVisible(true);
                menu.findItem(R.id.action_calcle).setVisible(false);
                break;
            case 1:
                menu.findItem(R.id.action_choose).setVisible(false);
                menu.findItem(R.id.action_calcle).setVisible(true);
                break;
        }
        return super.onPrepareOptionsMenu(menu);
    }

可以看到在创建选项菜单中填充了MENU,在刷新菜单方法中,进行了menu中item的显示和隐藏操作,那么什么时候去执行onPrepareOptionsMenu中的代码呢,

private void changeCurrentMenu() {
        if (currentMenu == 0) {
            currentMenu = 1;
        } else if (currentMenu == 1) {
            currentMenu = 0;
        }
        invalidateOptionsMenu();
    }
这里currentMenu指的是目前显示第几个item项目,最后一行
invalidateOptionsMenu();
执行之后会执行onPrepareOptionsMenu方法,相当于刷新了Menu从而得到了点击刷新menu文字的效果


猜你喜欢

转载自blog.csdn.net/zqd1984309864/article/details/78135363