启动ActionMode时有两个动作栏

我有以下活动布局:

             

它用于具有折叠工具栏+导航抽屉+标题animation和子标题(在标题小部件中)。 在我尝试启动ActionMode以启用多选之前,一切都很好。

我通过致电来做到:

  mActionMode = mCollapsingToolbarLayout.startActionMode(mActionModeCallback); 

问题是我结束了两个动作栏(有两个箭头):

查看截图

黑色的那个是我期待的那个,当我启动ActionMode时添加白色的那个。

难道我做错了什么?

编辑

AndroidMaifest中

    

styles.xml中

  @drawable/window_background_gray @color/app_background showHome|homeAsUp|showTitle @android:color/transparent @null @color/primary @color/accent @color/primaryDark @style/Theme.ButtonTextAppearance false true  

EDIT2

如果要测试此问题,可以使用ScrollingActivity示例代码在Android studio中创建新项目。 按照您的意愿修改主题,然后在按FAB时启动操作模式,将以下对象作为ActionMode.Callback传递给startSupportActionMode:

 private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() { // Called when the action mode is created; startActionMode() was called @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { // Inflate a menu resource providing context menu items MenuInflater inflater = mode.getMenuInflater(); inflater.inflate(R.menu.menu_scrolling, menu); return true; } // Called each time the action mode is shown. Always called after onCreateActionMode, but // may be called multiple times if the mode is invalidated. @Override public boolean onPrepareActionMode(ActionMode mode, Menu menu) { return false; // Return false if nothing is done } // Called when the user selects a contextual menu item @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { switch (item.getItemId()) { case R.id.action_settings: mode.finish(); return true; default: return false; } } // Called when the user exits the action mode @Override public void onDestroyActionMode(ActionMode mode) { mActionMode = null; } }; 

如果您使用的是工具栏,则这3行就足够了:

   

请记住在文件样式和样式中添加它(v21)

您需要告诉系统您使用自定义工具栏。 为此,请在活动的onCreate中添加以下内容:

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.your_layout); //Then get a reference to your Toolbar Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_top); //Tell the system to use yours setSupportActionBar(toolbar); } 

这里我的Activity扩展了AppCompatActivity ,这就是我使用setSupportActionBar ,但你会发现常规Activity setActionBar方法相同

此外,您还需要创建一个样式(在res / values / styles.xml下):

  

或者如果你还没有覆盖你的AppTheme:

  

最后在您的清单中为该特定活动设置此主题:

  

编辑:编辑完问题后,似乎确实是actionMode是问题所在。 如此答案所述 ,请确保使用正确的导入,以及使用startSupportActionMode而不是startActionMode

尝试在styles.xml中的主题中添加以下内容 –

 false false true 

如果您使用Toolbar还要添加以下行 –

 false true 

您的父主题必须是NoAction栏主题的一部分