覆盖的actionbar

原创
2014/11/14 19:41
阅读数 33

原文地址:https://developer.android.com/training/basics/actionbar/overlaying.html#EnableOverlay

 覆盖的actionbar        

通常,actionbar看上去是在界面的上方,会稍微占用了屏幕的可用空间。如果在某些设计中你想要隐藏和现实actionbar,可以调用hide()和show()方法。然后这将导致你的界面要基于新的空间大小重新计算和绘制。

        为了避免在actionbar隐藏和显示的时候重新计算布局大小,你可以使用actionbar的overlay模式 。当使用这个模式时,你的界面布局能使用所有的可见空间,就好像没有actionbar一样。而actionbar会绘制在界面的前面。他会遮挡住界面上方的一些部分,但是当actionbar隐藏或显示时,你不需要重新计算布局。

        如果你希望你的布局在actionbar下面也能部分显示,那就给actionbar创建一个背景部分透明的自定义样式。

使用Overlay模式

        使用OVerlay模式,需要创建一个自定义的主题继承已存在的actionbar主题,并且设置android:windowActionBarOverlay属性为true

针对Android3.0及更高版本

如果最小版本设置为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和更高版本

 如果你的应用使用支持包来兼容运行在低于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>


展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部