叠加动作栏
默认情况下,动作栏是显示在你的activity布局窗口的上面,这样就会占用一部分窗体空间。在用户操作过程中,你可以需要隐藏或显示动作栏,通过调用接口hide()或者show()来实现。但是,这样会引起你的activity重新计算布局大小,并且需要重新画界面。
为了避免当显示或隐匿动作栏的时候重新调整你的activity的布局,我们可以启用动作栏的叠加模式。在叠加模式下,你的activity的布局就会使用手机屏幕上的所有剩余空间,就像动作栏不存在一样,这个时候系统会把动作栏叠加在你的activity的上方,就好像飘浮在你的activity的上方一样。当然了,由于动作栏飘浮在上方,就会挡住你的activity的一部分界面。但是现在隐藏或显示动作栏,系统无需重新计算布局,自然也不需要重新描画了。
注意:如果想显示被隐匿的部分界面,可以自定义动作栏的主题,使动作栏的背景透明显示。请参考上课的内容。
启动叠加模式
为了启动叠加模式,你需要在扩展动作栏的主题基础上自定义一个主题,并且在主题中设置android:windowActionBarOverlay = true。
针对安卓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>
然后应用此主题到整个应用或者某个activity。具体请参考上一课内容。
效果如下图所示,你能看出效果来吗?
Figure 1. Gallery's actionbar in overlay mode.
给布局指定上边界
当动作栏处于叠加模式时,它可能挡住下面的activity的内容。为了下面的内容不被遮挡,我们可以设置某个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>
具体地自己试试吧,比较简单。^_^!