Android的装饰风格有多种,这些风格的不同之处主要体现在标题栏区域。比如最普通的标题栏仅有图标和标题。还有一些其他的风格,如带进度条的标题栏等。
在Android4.0上,有了新的标题栏,名为ActionBar,它提供了能强大的功能,如支持TAB页,支持菜单等。下面将分析主要的ActionBar样式。
一, ActionBar样式定义
Theme主题对ActionBar样式的定义如下:
这里定义了所有与ActionBar相关的属性,下面是Holo主题对ActionBar样式的定义,该样式对Theme定义的大部分ActionBar样式进行了重写,如下:
这是系统HOLO主题对ActionBar样式的定义。从中可以看到有一些重要的样式属性定义,如actionBarStye、actionButtonStyle、actionModeStyle等。
二, 样式属性actionBarStyle
样式属性actionBarStyle定义了ActionBar的基本样式。
其父样式如下:
其中,background定义了ActionBar的背景;
displayOptions定义了显示选项,这里声明了使用LOGO、显示Home以及Title。
homeLayout定义了ActionBar左边Home的布局,包括向左返回上一层那个箭头。
三, 样式属性actionButtonStyle
样式属性actionButtonStyle 定义了ActionBar上按钮的样式,比如ActionBar上的菜单按钮等。actionButtonStyle所引用的样式定义如下:
从上面的定义看出,它定义了Button的最小宽度、居中样式、左右padding以及图片的放缩方式。再看看该样式的父样式,如下:
从这里看出,子样式重写了父样式中的一些属性,但保留了背景和最小高度。这个背景background属性经过两次引用,引用了HOLO的如下属性:
很明显的就能看出,该背景引用的是一个selector类型的drawable。下面是这个drawable的定义:
这里就能看出各个状态下引用的是哪些背景图片了。
四, 样式属性actionBarDivider
样式属性actionBarDivider定义了ActionBar操作项之间的分隔条。可以看出,它直接引用了另一个ActionBar相关属性 dividerVertical,其定义如下:
通过分析,这里引用的drawable直接对应一张图片,而不是selector类型。
五, 样式属性actionMenuTextAppearance 和 actionMenuTextColor
样式属性actionMenuTextAppearance 和actionMenuTextColor定义了菜单的文本样式与颜色。
六, 样式属性actionBarWidgetThem
样式属性actionBarWidgetTheme 为被添加到ActionBar的操作栏中的Widget定义主题资源。
七, 样式属性actionBarStyle
样式属性actionBarStyle定义了ActionBar的基本样式。
其父样式如下:
八, 样式属性actionBarTabStyle
样式属性 actionBarTabStyle 为Tab页的标签定义样式,其引用样式如下:
其background属性定义了tab标签的背景,其也是selector类型的drawable。下面是该drawable的具体定义:
九, 样式属性actionBarTabBarStyle
样式属性actionBarTabBarStyle 定义了Tab标签之间分隔条。
可以看出,divider引用的资源与前面菜单分隔条引用的资源是相同的。
十, 样式属性actionBarTabTextStyle
样式属性 actionBarTabTextStyle 定义了Tab的文本样式,如下:
十一, 样式属性actionDropDownStyle
样式属性 actionDropDownStyle 定义了下拉导航列表的样式,如下:
其祖先样式:
十二, 其他
在与ActionBar相关的样式中还定义了ActionMode的样式,但ActionMode与ActionBar是属于两个不同类型的控件,这里就不对ActionMode进行介绍了。
通过上面对ActionBar样式的分析,我们就可能很容易在项目中根据实际需求对ActionBar的样式进行修改,特别是在主题切换功能中,要求对ActinBar的样式有比较全面深入的了解。除了ActionBar的样式之外,了解Android系统时何时创建ActionBar、以及根据不同feature创建不同的ActionBar也是非常重要的。
联系客服