Android layout 如何隐藏工具栏上的操作项

Android layout 如何隐藏工具栏上的操作项,android-layout,android-activity,android-fragments,Android Layout,Android Activity,Android Fragments,我用工具栏替换了Actionbar。我的minSDK-17和TargetSDK-21。 这就是问题所在。我有2个活动和4个行动项目 A B C D 所有4个操作项都保存在toolbar_actions.xml中 当前,所有4个操作项都显示在两个活动中。但是,我只想显示第一个活动中的行动项目A、B 我只想显示第二个活动中的行动项目C、D。如何做到这一点?我认为对于每个活动都有不同的toolbar_actions.xml文件是没有意义的 或者我应该使用上下文操作栏(CAB)?我认为,只有当操作项

我用工具栏替换了Actionbar。我的minSDK-17和TargetSDK-21。 这就是问题所在。我有2个活动和4个行动项目

  • A
  • B
  • C
  • D
所有4个操作项都保存在toolbar_actions.xml中

当前,所有4个操作项都显示在两个活动中。但是,我只想显示第一个活动中的行动项目A、B

我只想显示第二个活动中的行动项目C、D。如何做到这一点?我认为对于每个活动都有不同的toolbar_actions.xml文件是没有意义的

或者我应该使用上下文操作栏(CAB)?我认为,只有当操作项用于特定目的(如突出显示、复制、选择pdf阅读器应用程序)或很少使用时,才使用CAB才有意义

另一个问题是,我想在工具栏中添加一个微调器/下拉列表。工具栏中的微调器是否可以用于在不同的活动之间切换,或者工具栏微调器是否仅限于片段

  • 您可以在每个活动中使用OnCreateOptions菜单方法来隐藏所需的操作项。对于第一个活动,您希望仅显示项目A和B。所以你隐藏了C和D:

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.toolbar_actions, menu);
    
        // Hide action items, you don't want to display 
        menu.findItem(R.id.C).setVisible(false);
        menu.findItem(R.id.D).setVisible(false);
    
        return true;
    }
    
  • 您可以使用带有微调器的工具栏切换活动,但必须将其添加到所有要在其中切换的活动中(重复使用)


  • Dejan解决方案的一个小改进,以避免NullPointerException并返回实际通货膨胀结果:

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        boolean result = getMenuInflater().inflate(R.menu.toolbar_actions, menu);
    
        MenuItem actionC = menu.findItem(R.id.C);
        if(actionC!=null)
            actionC.setVisible(false);
    
        return result;
    }
    
    (对不起,我还不能评论)