【Android界面实现】Overlaying the Action Bar

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992

本篇文章翻译自http://developer.android.com/training/basics/actionbar/overlaying.html,想查看原文的同学可以自己翻墙看。

默认的,ActionBar会出现在你的Activity的窗口上面,这样可能会减少剩下的Activity的可见区域的大小。如果,在用户的交互的过程中,你想要隐藏或者是展示ActionBar,你可以通过hide()或者是show()方法来控制ActionBar的显示与否。然而,这会导致你的Activity根据新的面积重新计算和绘制布局。

为了避免当ActionBar的显示状态发生改变的时候也改变布局,你可以通过设置ActionBar的overlay模式来达到这个目的。当我们使用overlay模式的时候,我们的activity可以使用所有的位置,这是因为系统在绘制ActionBar的时候,是直接绘制在布局上面的。这样掩盖了布局的顶部,但是当ActionBar显示或者是隐藏的时候,系统不需要重新计算布局,在过渡的时候也是一样的。

小提示:如果你想你的布局在ActionBar的后面是部分可见的,也就是有点透明的效果,那么你需要创建一个自定义一个ActionBar的style,然后设置一个透明的背景,关于设置自定义ActionBar背景的操作,请参考style the action bar.

启动Overlay模式

如果我们需要开启Overlay模式,那么我们需要继承一个已有的ActionBar的theme,然后自定义 android:windowActionBarOverlay属性为true。

兼容3.0以上版本

如果要兼容这个版本,那么我们可以使用下面的代码

<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以上的版本,并且使用版本兼容库的话,那么我们就必须自定义一个继承自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>

需要注意的是,如果要兼容2.1,那么我们需要定义两个item属性,一个是带有android:的,一个是不带的,分别对应非兼容库和兼容库的。

如果我们使用了overlay模式之后,在Activity上原本应该显示的位置的内容可能会被遮挡,为了解决这个问题,我们可以设置父布局的padding或者是margen属性,防止内容被遮挡,下面的代码完成了这个功能:

<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:attr/actionBarSize是一个固定值。如果我们要支持低版本的话,那么应该把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>

在这种情况下,不管是在高版本还是低版本,都能够正常的工作。

时间: 2024-10-15 10:42:10

【Android界面实现】Overlaying the Action Bar的相关文章

Android中文翻译 - Adding the Action Bar 添加活动栏(action bar)

2014-10-28 张云飞VIR 翻译自:https://developer.android.com/training/basics/actionbar/index.html 添加活动栏(Adding the Action Bar) 译者注:我找不到更好的词汇翻译action bar,虽然我也认为 活动栏 不是个好的翻译,但总要有个中文名字.不过为了方便识别,本文仍继续使用英文的actionbar 活动栏action bar 是非常重要的设计元素之一,你可以为你的app中的activity来实

Android学习路线(八)为Action bar添加action按钮

Action bar允许你为与当前应用上下文相关的最重要的action items添加action按钮.那些直接显示在action bar上的icon或者文字都被称作action buttons.那些不适合action bar或者不是那么重要的Actions将会被隐藏在action overflow(译者注:action bar最右侧的垂直的三个点)里. 图1. 一个包含Search功能的action button和用来展示附加action的action overflow. 在XML文件中指定A

Android设计和开发系列第二篇:Action Bar(Develop—Training)

Adding the Action Bar GET STARTED DEPENDENCIES AND PREREQUISITES Android 2.1 or higher YOU SHOULD ALSO READ Action Bar Implementing Effective Navigation DESIGN GUIDE Action Bar The action bar is one of the most important design elements you can imple

Android中Action Bar的使用

内容概要 示例演示和基本介绍 启用Action Bar 在Action Bar上添加按钮 自定义Action Bar样式 自动隐藏Action Bar Action Provider的使用 ActionBarSherlock的使用 示例演示和基本介绍 如果使用ActionBar则分为两种情况 1.Action Bar on devices BEFORE Android 3.0(API 11) 1).ActionBarSherlock开源库 2).ActionBarCompat library f

【Android文档】Training-------Adding the Action Bar

转载请注明出处 :http://blog.csdn.net/chziroy/article/details/44171197 本文主要翻译android开发官网Training中关于ActionBar的几篇文章 Setting up the Action Bar 在大多最基本的格式中,action bar都会呈现activity的标题以及在左侧呈现app的图标.它能使用户知道当前处于哪个activity,并且使该app有一个持久的标志.如下图 要使用action bar需要app的activit

Android设计和开发系列第二篇:Action Bar(Design)

Action Bar The action bar is a dedicated piece of real estate at the top of each screen that is generally persistent throughout the app. It provides several key functions: Makes important actions prominent and accessible in a predictable way (such as

【Android界面实现】Styling the Action Bar

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 本篇文章翻译自Android开发者网站,但并不是完全按照原意翻译,添加了我个人的一些理解.想看原文的请戳:http://developer.android.com/training/basics/actionbar/styling.html ActionBar控件,可以为我们的App提供一致的导航体验,用户使用起来更加的方便和熟悉,降低用户的学习成本,但是这并不意味着我们要和其他的App使用完全一样的Ac

(Android UI)Action Bar

Action Bar 指明用户当前所在的界面,添加多个功能性按键和下拉式选择框,以提供能多功能. 主题一:让应用具备ActionBar 可能条件一:Support Android 3.0(API 11) and Above Only 步骤一:在<Application>标签中指明theme属性值,android:theme="@android:style/Theme.Hole",即可让应用具备ActionBar <application android:name=&q

Android之Action Bar

Action Bar在实际应用中,很好地为用户提供了导航,窗口位置标识,操作点击等功能.它出现于Android3.0(API 11)之后的版本中,在2.1之后的版本中也可以使用. 添加与隐藏Action Bar 在3.0之后的版本中(android:minSdkVersion 或者 android:targetSdkVersion 属性被设置成11或者更高),默认在activity中添加了Action Bar,不用额外添加.如果不想在activity中使用Action Bar,我们可以通过设定a