Android学习路线(十)如何将Action Bar叠放在你的布局上
来源:互联网 发布:知乎 红尘来去一场空 编辑:程序博客网 时间:2024/04/30 06:51
默认情况下,action bar出现在activity窗口的顶部,略微减少了activity布局的总空间。如果你想隐藏或者显示action bar,在这堂用户体验的课程中,你可以通过调用hide()
和show()
方法来实现。然后这样会导致你的activity基于它的新大小重新计算和绘制布局。
为了避免在action bar隐藏或显示时调整你的布局,你可以为你的action bar启用overlay mode。在overlay 模式下,你的activity布局将会使用整个可用空间,就像action bar不存在一样,同时系统将action bar绘制在你的activity前面。这样盖住了顶部的一些布局,但是现在当你的action bar隐藏或显示时,系统不会调整你的布局,并且这个过渡是无缝的。
贴士: 如果你想让你的布局在action bar背后部分可见,可以为action bar创建一个半透明的自定义样式,就像图1显示的那样。更多关于如何为action bar设置背景样式,请参阅为Action Bar设置风格。
启用Overlay Mode
要为action bar启用overlay mode,你需要创建一个继承自已有的action bar主题的自定义主题,并且设置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>
Android 2.1及以上版本
如果你的应用使用Support Library 类兼容运行于低于Android 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:为前缀适用于那些系统平台提供相应style的android版本,没有前缀的适用于那些从Support Library读取样式的老版本。
指定布局的顶端间距
当action bar在overlay mode下时,它可能挡住了那些需要显示的布局。要确保这种布局始终处于action bar的下方,使用actionBarSize
.的值来制定视图相对顶部的margin或者padding。例如:
<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>
如果你使用的是Support Library,你需要移除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 以及更过版本。
- Android学习路线(十)如何将Action Bar叠放在你的布局上
- Android学习路线(七)设置Action Bar
- Android学习路线(九)为Action Bar添加Style
- Android学习路线(八)为Action bar添加action按钮
- Android UI ActionBar功能-在 Action Bar 上添加按钮
- android action bar 学习记录
- Android学习之界面篇(八)在项目中使用Action Bar
- 在Action Bar上添加操作按钮
- Android平台的Action Bar
- android action-bar的使用
- Android学习路线(三)运行你的Android应用
- Android十日学习路线
- android studio中如何显示action bar
- Android框架学习-——Action Bar
- Android学习 - AppCompat实现Action Bar
- Android Action Bar【高级UI学习】
- [Android学习笔记] Overlaying Action Bar
- Android官方文档翻译 十 2.3Styling the Action Bar
- post和get的区别
- 浅谈HTTP中Get与Post的区别
- 堆排序
- GET与POST的区别1
- 黑马程序员--集合(List和Set)
- Android学习路线(十)如何将Action Bar叠放在你的布局上
- sudo详解以及我们生产库上常用的sudo设置
- 最高检1分钟内通报五名副厅级官员被立案侦查
- Android慎用layout嵌套, 尽量控制在5层以下java.lang.StackOverflowError
- C语言位段问题
- Light Oj 1116
- 普通字符串匹配(BF算法)
- 一个整型数组里除了两个不同数字之外,其它的数字都出现了两次。请写程序找出这两个只出现一次的数字。
- HTML table、form表单标签的介绍