Android轩辕剑之ActionBar之四
传送门 ☞ 轮子的专栏 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229
8添加下拉式导航
作为Activity内部的另一种导航(或过滤)模式,操作栏提供了内置的下拉列表。下拉列表能够提供Activity中内容的不同排序模式。
启用下拉式导航的基本过程如下:
创建一个给下拉提供可选项目的列表,以及描画列表项目时所使用的布局;
实现ActionBar.OnNavigationListener回调,在这个回调中定义当用户选择列表中一个项目时所发生的行为;
用setNavigationMode()方法该操作栏启用导航模式;
ActionBar actionBar = getActionBar();actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
注意: 你应该在activity的onCreate()方法中执行以上代码。
用setListNavigationCallbacks()方法给下拉列表设置回调方法。
actionBar.setListNavigationCallbacks(mSpinnerAdapter, mNavigationCallback);
9Action Bar的样式
如果你对应用程序中的可视构件进行了定制化的设计,那么你可能也会要对action bar做一些重新设计,以便跟应用程序的设计匹配。要这样做的话,需要使用Android的样式与主题框架中的一些特殊的样式属性来重新设置操作栏的样式。
注意:改变外观的背景图片依赖与当前按钮的状态(选择、按下、解除选择),因此需要使用state list drawable。还要确保使用NinePatch类型的drawable资源,以便允许图片的拉伸。NinePatch类型的图片应该比40像素高30像素宽的图片要小(mdpi下)。
9.1普通样式
android:windowActionBarOverlay:这个属性声明了操作栏是否应该覆盖Activity布局,而不是相对Activity的布局位置的偏移。这个属性的默认值是false。
通常,在屏幕上,action bar需要它自己的空间,并且把剩下的空间用来填充Activity的布局。当action bar是覆盖模式时,Activity会使用所有的有效空间,系统会在Activity的上面绘制action bar。如果你想要在action bar隐藏和显示时,布局中的内容保持固定的尺寸好位置,那么这种覆盖模式是有用的。你也可能只是为了显示效果来使用它,因为你可以给action bar设置半透明的背景,以便用户依然能够看到action bar背后的Activity布局。
注意:默认情况下,Holo主题会用半透明背景来绘制action bar。但是,你能够用自己的样式来修改它,并且默认的情况下,DeviceDefault主题在不同的设备上可能使用不透明的背景。
覆盖模式被启用时,Activity布局不会感知到action bar覆盖在它的上面,因此,在action bar覆盖的区域,最好不要放置一些重要的信息或UI组件。适当的情况下,你能够引用平台的actionBarSize值来决定操作栏的高度,例如,在XML布局文件中引用这个值。
<SomeView...android:layout_marginTop="?android:attr/actionBarSize" />
你还能够用getHeight()方法在运行时获取action bar的高度。如果在Activity生存周期的早期调用这个方法,那么在调用时所反映的action bar的高度可能不包括被堆放的action bar(因为导航选项标签)。要看如何在运行时判断action bar总的高度,请看simple中Honeycomb Gallery的TitlesFragment类。
9.2Action Items
android:actionButtonStyle:给操作项按钮定义样式资源。
android:actionBarItemBackground:给每个操作项的背景定义可描画资源(被添加在API Level 14中)。
android:itemBackground:给每个溢出菜单项的背景定义可描画资源。
android:actionBarDivider:给操作项之间的分隔线定义可描画资源(被添加在API Level 14中)
android:actionMenuTextColor:给显示在操作项中文本定义颜色。
android:actionMenuTextAppearance:给显示在操作项中文本定义样式资源。
android:actionBarWidgetThem:给作为操作视窗被填充到操作栏中的可视构件定义主题资源(被添加在API Level 14中)。
9.3导航标签
android:actionBarTabStyle:给操作栏中的选项标签定义样式资源。
android:actionBarTabBarStyle:给显示在导航选项标签下方的细条定义样式资源。
android:actionBarTabTextStyle:给导航选项标签中的文本定义样式资源。
9.4下拉列表
android:actionDropDownStyle:给下拉导航列表定义样式(如背景和文本样式)。
下面例子XML文件中给action bar定义了一些定制的样式。
<?xml version="1.0" encoding="utf-8"?><resources><!--应用程序或activity应用的主题--><style name="CustomActivityTheme" parent="@android:style/Theme.Holo"><item name="android:actionBarTabTextStyle">@style/CustomTabTextStyle</item><item name="android:actionBarDivider">@drawable/ab_divider</item><item name="android:actionBarItemBackground">@drawable/ab_item_background</item></style><!-- action bar标签文本样式--><style name="CustomTabTextStyle" parent="@android:style/TextAppearance.Holo"><item name="android:textColor">#2456c2</item></style></resources>
注意:一定要在<style>标签中声明一个父主题,这样定制的主题可以继承所有没有明确声明的样式。在修改action bar样式时,使用父主题是至关重要的,它会让你能够简单的覆写你想要改变的action bar样式,而不影响你不想修改的样式(如文本的外观或操作项的边缘)。
你能够在清单文件中把定制的主题应用到整个应用程序或一个单独的Activity对象。
<application android:theme="@style/CustomActivityTheme" ... />
9.5高级样式
如果需要比上述属性更高级的样式,可以在Activity的主题中包含android:actionBarStyle和android:actionBarSplitStyle属性。这两个属性的每一个都指定了另一种能够给action bar定义各种属性的样式,包括带有android:background、android:backgroundSplit、android:backgroundStacked属性的不同背景。如果要覆盖这些action bar样式,就要确保定义一个像Widget.Holo.ActionBar这样的父action bar的样式。
例如,如果要改变操作栏背景,你可以使用下列样式:
<?xml version="1.0" encoding="utf-8"?><resources><!-- 应用程序或activity应用的主题 --><style name="CustomActivityTheme" parent="@android:style/Theme.Holo"><item name="android:actionBarStyle">@style/MyActionBar</item></style><!-- action bar backgrounds 样式--><style name="MyActionBar" parent="@android:style/Widget.Holo.ActionBar"><item name="android:background">@drawable/ab_background</item><item name="android:backgroundStacked">@drawable/ab_background</item><item name="android:backgroundSplit">@drawable/ab_split_background</item></style></resources>
转载于:https://www.cnblogs.com/innosight/p/3271125.html
Android轩辕剑之ActionBar之四相关推荐
- Android轩辕剑之ActionBar之三
传送门☞轮子的专栏☞转载请注明☞http://blog.csdn.net/leverage_1229 6添加Action Provider 与action view类似,Action Provider ...
- Android轩辕剑之ActionBar之二
传送门☞轮子的专栏☞转载请注明☞http://blog.csdn.net/leverage_1229 4使用应用程序图标来导航 默认情况下,应用程序图标显示在action bar的左边.你能够把这个图 ...
- Android轩辕剑之ActionBar之一
传送门☞轮子的专栏☞转载请注明☞http://blog.csdn.net/leverage_1229 Action Bar是一个能用于确定应用程序和用户的位置,并提供给用户操作和导航模式的窗口功能.如 ...
- Android AppCompatActivity的ActionBar之SearchView、ShareActionProvider以及menu
Android AppCompatActivity的ActionBar之SearchView.ShareActionProvider以及menu Android早期推出的ActionBarAct ...
- Android 顶部标题栏ActionBar详解
转载自http://www.cnblogs.com/yc-755909659/p/4290784.html 一.ActionBar介绍 在Android 3.0中除了我们重点讲解的Fragment外, ...
- Android AR开发实践之四:基于Sceneform的ARcore开发实例
Android AR开发实践之四:基于Sceneform的ARcore开发实例 一.设备配置 1.配置虚拟设备 2.配置真机 二.开发环境配置 1.首先添加sceneform的gradle插件到工程配 ...
- Android开发之ActionBar结合Fragment的导航功能的使用(源代码分享)
标签在操作栏方便用户去探索,在你的应用程序在不同视图之间切换.ActionBar提供的标签是最理想的选择,因为他们适应不同的屏幕尺寸.一旦你确定了Fragment出现在布局里,添加标签的步骤如下:一: ...
- (Android Studio)ActionBar's Theme/Style [ActionBar主题风格修改]
(1)默认theme代码如下: 运行结果: 视觉效果:ActionBar为Dark,背景为Light. (2)将theme改为Light: 运行结果: 视觉效果:ActionBar和背景都为Light ...
- Android控件ActionBar浅析及适配2.x的方法介绍
概述: 在Honeycomb版本系统中,Android引入了全新的操作栏.操作栏不仅取代了显示标题和应用图标的传统标题栏(title bar),还带来了更多其他的功能,例如,安置菜单选项.配置应用图标 ...
最新文章
- 那些年,SDN走过来时的路
- 关于爬楼梯的lintcode代码
- 一个有关ajax去获取天气预报然后用echarts展现出来的小demo
- 原神抽卡记录分析工具源码全开源
- 【成长之路】JavaScript中,模拟 call 的底层实现
- SpringCloud工作笔记081---SpringCloud Hystrix Turbine(断路器聚合监控)的基本使用
- Spring Boot 文件上传功能实现与简单示例
- CSS text-decoration 属性
- IIS Express 启用目录浏览
- thinkphp 插件
- csdn中让图片居中
- 力软敏捷开发平台7.0.6旗舰版功能更新介绍
- 换行、回车、空格等常用的ASCII码值
- 设置虚拟机桥接模式以及解决桥接模式上不了网以及ping不通主机的问题
- Lakes.AERMOD.View.v8.9.0 1CD大气扩散模型软件包
- excel合并两列内容_10.表格中如何将两列文本内容合并
- 2019黑马python吾爱_最新Python黑马头条推荐系统项目视频教程
- android keystore 查看、修改密码和别名等
- 《数字图像处理》手动实现最佳陷波滤波
- C1认证学习四(多媒体基础参数)
热门文章
- vue-cli目录结构介绍
- 如果使用 sftp 命令
- 【kafka】flink 发送 数据到 kafka 报错 Memory records is not writable
- 【Elasticsearch】实用BM25 -第1部分: shard 如何影响Elasticsearch中的相关性评分
- 【Clickhouse】ClickHouse REST API(HTTP接口)及Engine引擎的使用
- 【MySQL】MySQL 执行 PROCEDURE ANALYSE 报错 ERROR 1064 (42000)
- 【Https】keytool 导入证书到 本地 Exception: Input not an X.509 certificate
- 【正则表达式】正则表达式匹配${xxx}
- 【Kafka】Failed to send data to Kafka: Failed to update metadata after 60000 ms
- Spring : Spring 深入理解lombok