zoukankan      html  css  js  c++  java
  • 【Android Developers Training】 9. 覆盖于布局之上的Action Bar

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好。

    原文链接:http://developer.android.com/training/basics/actionbar/overlaying.html


    默认的,Acton Bar会显示在你的activity窗口的上部,使得它会稍许减少了activity布局的剩余空间。如果在用户的UI交互过程中,你希望可以隐藏和显示Action Bar,你可以通过调用其hide()show()这两个方法来实现。然而,这会导致你的activity在新尺寸的基础上重新计算和绘制布局。

    为了避免在Action Bar隐藏和显示的时候重新调整布局的尺寸,你可以使用Action Bar的覆盖模式(overlay mode)。当在覆盖模式中,你的activity会使用屏幕上所有的空间,就好像action bar不在那儿一样,然后系统会将action bar绘制于你的布局之上。这会使得布局中顶部的一部分被遮蔽,但是现在这个时候对action bar进行隐藏或者显示的时候,系统就不需要重新调整布局的尺寸,使得画面过渡平滑而自然。

    Tip:

    如果你希望你的布局在你的Action Bar之后是部分可见的,可以为action bar创建一个半透明的自定义背景,如图1所示。关于如何自定义Action Bar的风格,可以阅读:Styling the Action Bar。(博客链接:http://www.cnblogs.com/jdneo/p/3444484.html

    图1. Gallery的覆盖于布局之上(overlay mode)的Action Bar

     

    一). 启用覆盖模式

    为了启用Action Bar的覆盖模式,你需要创建一个继承自一个存在了的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:”前缀的版本适用于包含了这个风格的Android平台,而没有的版本适用于那些较古老的版本,风格从“Support Library”中获取。

    二). 指定布局的顶部边缘

    当Action Bar在覆盖模式时,它可能会遮蔽你的一部分本应该要可见的布局。为了保证这些元素永远处于action bar的下方,可以通过添加顶部View的外边距(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>

    如果你使用的是“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和更高版本。

  • 相关阅读:
    prometheus监控zookeeper
    prometheus监控mongo
    python游戏练手--乒乓球
    python游戏练手--贪吃蛇
    python爬虫练手--糗事百科图片获取
    Prometheus监控安装及使用(一)
    善用k8s explain
    k8s deployment
    k8s pod
    k8s deployment 金丝雀发布 更新的 暂停 恢复 回滚
  • 原文地址:https://www.cnblogs.com/jdneo/p/3446073.html
Copyright © 2011-2022 走看看