缺省情况下,action栏显示在activity窗口的上方,占用窗口的一小部分。如果开发者希望在用户使用过程中能够根据需要灵活的隐藏action栏,可以使用ActionBar的Hide()和Show()方法。但是这样会导致activity重新计算大小和重新绘制界面布局。
使能action栏的overlay模式,可以避免上述动作。对于overlay模式,activity的界面布局将忽略action栏使用完整的可用空间进行绘制,而系统则将action栏绘制在activity界面布局的上方。这样虽然会使action栏遮盖界面布局的一部分,但是当action栏根据需要显示或者隐藏时,系统无需再重新计算activity的界面布局的大小。
技巧: 如果希望action栏显示时也能够看到界面布局被遮盖的部分,可以创建一个使用半透明背景的action栏样式,如图1所示。定制action栏章节介绍如何定制一个半透明背景的action栏样式。
使能overlay模式
Android 3.0或者更高版本
如果minSdkVersion设置为11或者更高,基于Theme.Holo样式或者其衍生样式创建定制样式,如:
<resources>
<!-- the theme applied to the application or activity -->
<style name="CustomActionBarTheme"
parent="@android:style/Theme.Holo">
<item name="android:windowActionBarOverlay">true</item>
</style>
</resources>
Android 2.1或者更高版本
略
定义界面布局的顶部边界
被层叠化的action栏会使部分本应正常显示的界面布局模糊显示。为了保证一些元素能够始终不被action栏遮挡,可以为这些元素的相关View添加基于actionBarSize的指定高度值的边界或者填充。例如:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="?android:attr/actionBarSize">
...
</RelativeLayout>
如果使用的是支撑库来实现actionBar,则不需要使用android前缀,如:
<!-- Support library compatibility -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="?attr/actionBarSize">
...
</RelativeLayout>