当前位置: 首页 > news >正文

Android学习路径(十)怎么会Action Bar堆放在布局

默认情况下。action bar出如今activity窗体的顶部。稍微降低了activity布局的总空间。

假设你想隐藏或者显示action bar。在这堂用户体验的课程中,你能够通过调用hide() 和show() 方法来实现。然后这样会导致你的activity基于它的新大小又一次计算和绘制布局。

Figure 1. Gallery's action bar in overlay mode.

为了避免在action bar隐藏或显示时调整你的布局,你能够为你的action bar启用overlay mode。在overlay 模式下,你的activity布局将会使用整个可用空间,就像action bar不存在一样,同一时候系统将action bar绘制在你的activity前面。

这样盖住了顶部的一些布局,可是如今当你的action bar隐藏或显示时。系统不会调整你的布局,而且这个过渡是无缝的。

贴士: 假设你想让你的布局在action bar背后部分可见,能够为action bar创建一个半透明的自己定义样式,就像图1显示的那样。

很多其它关于怎样为action bar设置背景样式,请參阅为Action Bar设置风格

启用Overlay Mode


要为action bar启用overlay mode,你须要创建一个继承自已有的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:为前缀适用于那些系统平台提供对应style的android版本号,没有前缀的适用于那些从Support Library读取样式的老版本号。

指定布局的顶端间距


当action bar在overlay mode下时。它可能挡住了那些须要显示的布局。要确保这样的布局始终处于action bar的下方。使用actionBarSize.的值来制定视图相对顶部的margin或者padding。比如:

<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 而更多的在版本号。

相关文章:

  • 论如何优雅的处理回文串 - 回文自动机详解
  • 按值传参,按引用传参,按指针传参的区别
  • linux 下Time_wait过多问题解决
  • SVN目录对号图标(更新、冲突)不显示
  • 神奇的make自动生成include file的功能
  • SLAM学习笔记(2)SLAM算法
  • Using MRR(Multi-Range Read )
  • BigMemroy系列文章--6. Ehcache扩展功能--Jmx、同步
  • Android的硬件抽象层模块编写规范
  • 第二次课总结笔记
  • Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name
  • SNMP常用数据操作
  • Provisioning Services 7.6 入门到精通系列之五:PVS控制台安装
  • matlab repmat()
  • 【Apache KafKa系列之一】KafKa安装部署
  • 【node学习】协程
  • gf框架之分页模块(五) - 自定义分页
  • JavaScript实现分页效果
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • Node 版本管理
  • Python 基础起步 (十) 什么叫函数?
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 笨办法学C 练习34:动态数组
  • 从零开始的无人驾驶 1
  • 分布式任务队列Celery
  • 关于for循环的简单归纳
  • 精彩代码 vue.js
  • 嵌入式文件系统
  • 探索 JS 中的模块化
  • 异步
  • 阿里云ACE认证学习知识点梳理
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​学习一下,什么是预包装食品?​
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (4) PIVOT 和 UPIVOT 的使用
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (搬运以学习)flask 上下文的实现
  • (二)linux使用docker容器运行mysql
  • (四)Controller接口控制器详解(三)
  • (循环依赖问题)学习spring的第九天
  • (转载)hibernate缓存
  • ***利用Ms05002溢出找“肉鸡
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .Net MVC + EF搭建学生管理系统
  • .NET 反射的使用
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .net程序集学习心得
  • .sh 的运行
  • [.net] 如何在mail的加入正文显示图片
  • [1525]字符统计2 (哈希)SDUT