如何通过Click事件以编程方式显示/隐藏操作栏项

时间:2016-05-31 10:32:09

标签: java android xml android-actionbar

默认情况下,我使用以下代码将可见性设置为false。

@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_items, menu);
       menu.findItem(R.id.action_share).setVisible(false);
        return true;
    }

现在,当用户点击我的活动中的按钮时,如何让它再次显示。

3 个答案:

答案 0 :(得分:7)

在你的onCreateOptionsMenu:

public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_items, menu);
       if (hideIcon){
          menu.findItem(R.id.action_share).setVisible(false);
       }else{
          menu.findItem(R.id.action_share).setVisible(true);
       }
        return true;
    }

在要显示/隐藏图标的方法中,只需将布尔值hideIcon设置为true或false,然后调用:

invalidateOptionsMenu();

刷新菜单。

答案 1 :(得分:1)

获取该菜单项的实例,并且每次都可以设置其项目可见性。

        Menu mMenu;
        @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_items, menu);
           mMenu = menu;
           mMenu.findItem(R.id.action_share).setVisible(false);
           return true;
        }

//somewhere else

mMenu.findItem(R.id.action_share).setVisible(true);

并基于@chol接听电话invalidateOptionsMenu();

答案 2 :(得分:0)

虽然您可以创建一个类字段

   private Menu menu;

并在onCreateOptionsMenu()

中捕获其值
   this.menu = menu;

然后在clickListener中编写代码

   this.menu.findItem(R.id.action_share).setVisible(true);