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

How to hide action items on Toolbar

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

所有 4 个行动项目都在 toolbar_actions.xml

中维护

目前这4个action item都显示在两个活动中。但是,我只想在 1st activity

中显示操作项 A、B

我想在第 2 个 activity 中只显示操作项 C、D。如何实现?我认为为每个 activity.

使用不同的 toolbar_actions.xml 文件是没有意义的

或者我应该使用上下文操作栏 (CAB)?我认为仅当操作项用于特定目的(如突出显示、复制、select(如果是 pdf reader 应用程序)或很少使用时,才有意义使用 CAB。

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

  1. 您可以在每个 activity 中使用 onCreateOptionsMenu 方法来隐藏您想要的操作项。对于第一个 activity,您只想显示项目 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;
    }
    
  2. 您可以使用带有微调器的工具栏来切换活动,但是您必须将它添加到您想要切换的所有活动(重新使用)。

为了避免 NullPointerExceptions 和 return 实际的 inflation 结果,对 Dejan 的解决方案做了一个小改进:

@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;
}

(对不起,我还不能评论)