今天接受一个Bug,如下图,就是在点击某个按钮呼出ActionMode的时候,ToolBar并没有消失,而是被顶到ActionMode的下面。起初以为是开发小组里面的其他成员在写issue的时候不小心修改了布局的问题,于是拼命翻看提交记录,想从中找出问题,后来发现并没有对ActionMode做出修改,于是在网上找了ActinMode的详细使用,发现了其中的问题!
在网上看到ActionMode和ToolBar一起使用时需要在使用界面主题样式对应的styles.xml文件中添加加一行 <item name="windowActionModeOverlay">true</item>
在看看项目中的styles文件,居然是<item name="android:windowActionModeOverlay">true</item>
修改过来就好了,真的神奇,就差一个Android,怎么差距那么大呢?再看看它们俩的区别!
<style name="NoHeaderDark" parent="MaterialNavigationDrawerTheme">
<item name="drawerType">@integer/DRAWERTYPE_CUSTOM</item>
<item name="android:windowBackground">@color/black</item>
<item name="android:switchStyle">@style/DarkSwitch</item>
<item name="android:windowActionModeOverlay">true</item>
<!--<item name="multipaneSupport">true</item>-->
<item name="defaultSectionLoaded">0</item>
<item name="toolbarElevation">true</item>
<item name="colorSwitchThumbNormal">@color/colorSwitchThumbNormal</item>
<item name="colorControlActivated">@color/colorControlActivated</item>
</style>
<item name="windowActionModeOverlay">true</item>
<item name="android:windowActionModeOverlay">true</item>
这些都是OptionsMenu的属性 ifRoom表示如果Actionbar上有空间,就显示这个menu,至于他们有什么区别,还了解,于是问了CSDN里面的大神们,收到一个比较满意的答案。
如果有更好解释,欢迎一起讨论交流。
问题解答链接
ActionMode使用的注意事项:
- ActionMode.Callback 接口使用android.support.v7.view.ActionMode 而不是 android.view.ActionMode
- Activity需要继承AppCompatActivity
- 通过startSupportActionMode启动ActionMode而不是startActionMode