原文地址:https://developer.android.com/training/basics/actionbar/overlaying.html#EnableOverlay html
覆盖的actionbar java
一般,actionbar看上去是在界面的上方,会稍微占用了屏幕的可用空间。若是在某些设计中你想要隐藏和现实actionbar,能够调用hide()和show()方法。而后这将致使你的界面要基于新的空间大小从新计算和绘制。android
为了不在actionbar隐藏和显示的时候从新计算布局大小,你能够使用actionbar的overlay模式 。当使用这个模式时,你的界面布局能使用全部的可见空间,就好像没有actionbar同样。而actionbar会绘制在界面的前面。他会遮挡住界面上方的一些部分,可是当actionbar隐藏或显示时,你不须要从新计算布局。
app
若是你但愿你的布局在actionbar下面也能部分显示,那就给actionbar建立一个背景部分透明的自定义样式。ide
使用Overlay模式布局
使用OVerlay模式,须要建立一个自定义的主题继承已存在的actionbar主题,而且设置android:windowActionBarOverlay属性为true。spa
针对Android3.0及更高版本设计
若是最小版本设置为11或是更高,你自定义的主题须要使用Theme.Holo主题或是他的继承类做为你自定义主题的父类。例如:
code
<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和更高版本
xml
若是你的应用使用支持包来兼容运行在低于Android3.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版本,没有前缀的是针对旧的版本使用支持包来读取样式。
指定布局的头部间距
当actionbar在overlay模式下,部分被隐藏的布局也想要可见,能够指定布局的头部margin或padding为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
<!-- 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>