安卓训练-开始-添加操作栏-覆盖模式的操作栏
2014-11-10 13:29
232 查看
覆盖模式的操作栏
上一课下一课
这节课教你
启用覆盖模式
只支持安卓 3.0或更高版本
支持安卓 2.1或更高版本
指定布局的顶部外边距
你还需要阅读
样式与主题
默认情况下,操作栏出现在你的 activity 窗口的顶部,会稍微减少你的 activity 剩余部分的可用空间。在用户交互过程中,如果你想要隐藏和显示操作栏,你可以调用
ActionBar上的
hide()
和
show()。但是,这会导致你的 activity 根据它的新的大小重算并重绘布局。
图 1. 相册的覆盖模式的操作栏。
为了避免在操作栏隐藏和显示时调整你的布局的大小,你可以为操作栏启用覆盖模式(overlay mode)。在覆盖模式下,你的 activity 布局使用所有可用空间,就像操作栏操作栏不在那里,系统在你的布局的前面绘制操作栏。这掩盖了布局顶部部分,但是现在当操作栏隐藏或出现时,系统不需要调整你的布局的大小,可以无缝地转变。
技巧:如果你想要你的布局在操作栏后面部分可见,你要为操作栏创建一个有部分透明的背景自定义样式,像 图 1 显示的那样。 更多关于怎样为操作栏定义背景的信息,参见为操作栏添加样式。
启用覆盖模式
为了让操作栏启用覆盖模式,你需要通过继承一个已存在的操作栏主题来创建一个自定义的主题,并把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>
支持安卓 2.1或更高版本
如果你的为了兼容运行比安卓 3.0低版本的设备而使用支持库,你的自定义主题需要使用Theme.AppCompat主题(或它的一个子孙)作为你的父主题。例如:
<resources> <!-- the theme applied to the application or activity --> <style name="CustomActionBarTheme" parent="@android:style/Theme.<strong>AppCompat</strong>"> <item name="android:windowActionBarOverlay">true</item> <!-- Support library compatibility --> <item name="windowActionBarOverlay">true</item> </style> </resources>
还需注意到,这个主题包含
windowActionBarOverlay的两种定义方式:一种有
android:前缀而另一种没有。有
android:前缀的用于平台有这个样式的安卓版本,没有前缀的用于从支持库中读取样式的老版本。
指定布局的顶部外边距
当操作栏是覆盖模式时,它肯定掩盖一些你的布局中需要保持可见的一部分。为了确保这些项在所有时候都在操作栏的下面,你需要使用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>
如果你为操作栏使用支持库,你需要删除
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在所有版本上都可以工作,包括安装 3.0或更高版本。
上一课下一课
相关文章推荐
- 安卓训练-开始-添加操作栏-添加操作按钮
- 安卓训练-开始-添加操作栏-为操作栏添加样式
- 安卓训练-开始-添加操作栏
- 安卓训练-开始-添加操作栏-设置操作栏
- 安卓训练-开始-管理 Activity 生命周期-重新创建 Activity
- 安卓训练-开始-使用 Fragment 构造动态 UI
- 安卓训练-开始-支持不同的设备
- 安卓训练-开始-开发你的第一个应用-启动另一个 Activity
- 安卓中的上下文操作模式ActionMode:email列表多选中用到的
- 安卓训练-开始-管理 Activity 生命周期-停止和重启 Activity
- 安卓训练-开始-开发你的第一个应用-创建安卓工程
- java操作excel在开始位置添加一列
- 安卓训练-开始
- 安卓训练-开始-保存数据-保存键值对集合
- 安卓训练-开始-保存数据-保存文件
- 安卓训练-开始-使用 Fragment 构造动态 UI-创建 Fragment
- 安卓训练-开始-开发你的第一个应用-开发简单的用户界面
- 安卓训练-开始-管理 Activity 生命周期
- 安卓训练-开始-开发你的第一个应用-运行你的应用
- 安卓训练-开始-支持不同的设备-支持不同的屏幕