博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1.2.3 自定义ActionBar的风格
阅读量:6125 次
发布时间:2019-06-21

本文共 2777 字,大约阅读时间需要 9 分钟。

Action bar 为用户提供一种熟悉可预测的方式来展示操作和导航,但是这并不意味着我们的 app 要看起来和其他 app 一样。如果想将 action bar 的风格设计的合乎我们产品的定位,只需简单地使用 Android 的 资源。

Android 包括一少部分内置的 activity 主题,这些主题中包含 “dark” 或 “light” 的 action bar 样式。我们也可以扩展这些主题,以便于更好的为 action bar 自定义外观。

注意:如果我们为 action bar 使用了 Support 库的 API,那我们必须使用(或重写) 家族样式(甚至 家族,在 API level 11 或更高版本中可用)。如此一来,声明的每一个样式属性都必须被声明两次:一次使用系统平台的样式属性( 属性),另一次使用 Support 库中的样式属性( 属性 - 这些属性的上下文其实就是我们的 app)。更多细节请查看下面的示例。

使用一个 Android 主题

Android 包含两个基本的 activity 主题,这两个主题决定了 action bar 的颜色:

  • ,一个 “dark” 的主题
  • ,一个 “light” 的主题

actionbar-theme-dark@2x.png

actionbar-theme-light-solid@2x.png

这些主题即可以被应用到 app 全局,也可以通过在 manifest 文件中设置 元素 或 元素的 android:theme 属性,对单一的 activity 进行设置。

例如:

可以通过声明 activity 的主题为 来达到如下效果:action bar 为dark,其他部分为light。

actionbar-theme-light-darkactionbar@2x.png

当使用 Support 库时,必须使用 主题替代:

  • ,一个“dark”的主题
  • ,一个“light”的主题
  • ,一个带有“dark” action bar 的“light”主题

一定要确保我们使用的 action bar icon 的颜色与 action bar 本身的颜色有差异。 为 Holo “dark”和“light”的 action bar 提供了标准的 action icon。

自定义背景

为改变 action bar的背景,可以通过为 activity 创建一个自定义主题,并重写 属性来实现。 属性指向另一个样式;在该样式里,通过指定一个 drawable 资源来重写 属性。

actionbar-theme-custom@2x.png

如果我们的 app 使用了 或 ,也可以通过分别设置 和 属性来为这些条指定背景。

Note:为自定义主题和样式声明一个合适的父主题,这点很重要。如果没有父样式,action bar将会失去很多默认的样式属性,除非我们自己显式的对他们进行声明。

仅支持 Android 3.0 和更高

当仅支持 Android 3.0 和更高版本时,可以通过如下方式定义 action bar 的背景:

res/values/themes.xml

然后,将主题应用到 app 全局或单个的 activity 之中:

支持 Android 2.1 和更高

当使用 Support 库时,上面同样的主题必须被替代成如下:

res/values/themes.xml

然后,将主题应用到 app 全局或单个的 activity 之中:

自定义文本颜色

修改 action bar 中的文本颜色,需要分别设置每个元素的属性:

  • Action bar 的标题:创建一种自定义样式,并指定 textColor 属性;同时,在自定义的 中为 属性指定为刚才的自定义样式。

注意:被应用到 的自定义样式应该使用 作为父样式。

  • Action bar tabs:在 activity 主题中重写
  • Action 按钮:在 activity 主题中重写

仅支持 Android 3.0 和更高

当仅支持 Android 3.0 和更高时,样式 XML 文件应该是这样的:

res/values/themes.xml

支持 Android 2.1 和更高

当使用 Support 库时,样式 XML 文件应该是这样的:

res/values/themes.xml

自定义 Tab Indicator

为 activity 创建一个自定义主题,通过重写 属性来改变 使用的指示器。 属性指向另一个样式资源;在该样式资源里,通过指定一个state-list drawable 来重写 属性。

注意:一个state-list drawable 是重要的,它可以通过不同的背景来指出当前选择的 tab 与其他 tab 的区别。更多关于如何创建一个 drawable 资源来处理多个按钮状态,请阅读 文档。

例如,这是一个状态列表 drawable,为一个 action bar tab 的多种不同状态分别指定背景图片:

res/drawable/actionbar_tab_indicator.xml

仅支持 Android 3.0 和更高

当仅支持 Android 3.0 和更高时,样式 XML 文件应该是这样的:

res/values/themes.xml

支持 Android 2.1 和更高

当使用 Support 库时,样式 XML 文件应该是这样的:

res/values/themes.xml

更多资源

  • 关于 action bar 的更多样式属性,请查看 指南
  • 学习更多样式的工作机制,请查看 指南
  • 全面的 action bar 样式,请尝试

转载于:https://www.cnblogs.com/youseiraws/p/7054063.html

你可能感兴趣的文章
移动端架构的几点思考
查看>>
Spark综合使用及用户行为案例区域内热门商品统计分析实战-Spark商业应用实战...
查看>>
初学者自学前端须知
查看>>
Retrofit 源码剖析-深入
查看>>
企业级负载平衡简介(转)
查看>>
ICCV2017 论文浏览记录
查看>>
科技巨头的交通争夺战
查看>>
当中兴安卓手机遇上农行音频通用K宝 -- 卡在“正在通讯”,一直加载中
查看>>
Shell基础之-正则表达式
查看>>
JavaScript异步之Generator、async、await
查看>>
讲讲吸顶效果与react-sticky
查看>>
c++面向对象的一些问题1 0
查看>>
直播视频流技术名词
查看>>
网易跟贴这么火,背后的某个力量不可忽视
查看>>
企业级java springboot b2bc商城系统开源源码二次开发-hystrix参数详解(八)
查看>>
java B2B2C 多租户电子商城系统- 整合企业架构的技术点
查看>>
IOC —— AOP
查看>>
比特币现金将出新招,推动比特币现金使用
查看>>
数据库的这些性能优化,你做了吗?
查看>>
某大型网站迁移总结(完结)
查看>>