自定义ActionBar的风格

作者: brant_feeboo | 来源:发表于2017-02-04 16:58 被阅读0次

    如果想将 action bar 的风格设计的合乎我们产品的定位,只需简单地使用 Android 的样式和主题资源。

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

    使用一个 Android 主题

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

    Theme.Holo,一个 “dark” 的主题

    Theme.Holo.Light,一个 “light” 的主题

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

    自定义背景

    重写actionBarStyle属性来实现。actionBarStyle属性指向另一个样式;在该样式里,通过指定一个 drawable 资源来重写background属性。

    如果我们的 app 使用了navigation tabssplit action bar,也可以通过分别设置backgroundStackedbackgroundSplit属性来为这些条指定背景。(Note:为自定义主题和样式声明一个合适的父主题,这点很重要。如果没有父样式,action bar将会失去很多默认的样式属性,除非我们自己显式的对他们进行声明。)

    仅支持 Android 3.0 和更高

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

    支持 Android 2.1 和更高

    当使用 Support 库时,上面同样的主题必须被替代成如下:res/values/themes.xml

    自定义文本颜色

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

    Action bar 的标题:创建一种自定义样式,并指定textColor属性;同时,在自定义的actionBarStyle中为titleTextStyle属性指定为刚才的自定义样式。(注意:被应用到titleTextStyle的自定义样式应该使用TextAppearance.Holo.Widget.ActionBar.Title作为父样式。)

    仅支持 Android 3.0 和更高

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

    res/values/themes.xml

    自定义 Tab Indicator

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

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

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

    res/drawable/actionbar_tab_indicator.xml

    仅支持 Android 3.0 和更高

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

    res/values/themes.xml

    源地址:http://wiki.jikexueyuan.com/project/android-training-geek/styling.html

    相关文章

      网友评论

        本文标题:自定义ActionBar的风格

        本文链接:https://www.haomeiwen.com/subject/gizjittx.html