覆盖的actionbar

原文地址: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属性为truespa

针对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>