(一)开始____2、添加操作栏-Adding the Action Bar——叠加操作栏-Overlaying the Action Bar
目录[隐藏] |
叠加操作栏
- 默认情况下操作栏会出现在活动窗口的顶部,稍微减少了剩余活动布局的可用空间。如果在用户交互过程中你想要隐藏或显示操作栏,就可以通过在ActionBar调用 hide() 和 show()来实现。然而这会导致活动重新计算并根据大小重新绘制新布局。
- 为了避免在操作栏隐藏或显示时调整布局,可以为操作栏启用叠加模式。在叠加模式下如果操作栏不存在,活动布局会使用所有可用空间,而系统会在布局前绘制操作栏。这会遮盖一些顶部布局,但是当操作栏隐藏或者显示时,系统不需要调整布局而是无缝衔接。
启用叠加模式
要启用操作栏的叠加模式,需要创建一个能够扩展现有操作栏主题的自定义主题,并且要把android:windowActionBarOverlay 属性设置为true.
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>
Android2.1或者更高级别
如果应用程序使用低于安卓3.0版本的兼容支持库 ,自定义主题要使用 Theme.AppCompat(或者其子类之一)来作为父类主题。例如:
<resources>
<!-- the theme applied to the application or activity -->
<style name="CustomActionBarTheme"
parent="@android:style/Theme.AppCompat">
<item name="android:windowActionBarOverlay">true</item>
<!-- Support library compatibility -->
<item name="windowActionBarOverlay">true</item>
</style>
</resources>
注意该主题包含了两种 windowActionBarOverlay 样式定义:一种使用 android前缀而另一种不使用。带有android前缀的定义适用于包括平台样式的安卓版本,另一种不带前缀的定义适用于从支持库查出样式的旧版本。
指定布局顶部边距
操作栏处于叠加模式时,可能会遮盖一些本应保持可见状态的布局。为了确保这些项目总是低于操作栏,添加边距或者用 actionBarSize指定高度填充视图(S)顶部。例如:
<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>
如果使用操作栏支持库,你需要删除 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>
这种情况下不带前缀的?attr/actionBarSize适用于包括 Android 3.0及更高级别在内的所有版本.

浙公网安备 33010602011771号