android按钮样式图片居中,ActionBar、ActionMode样式设定解析

Android的装饰风格有多种,这些风格的不同之处主要体现在标题栏区域。比如最普通的标题栏仅有图标和标题。还有一些其他的风格,如带进度条的标题栏等。

在Android4.0上,有了新的标题栏,名为ActionBar,它提供了能强大的功能,如支持TAB页,支持菜单等。下面将分析主要的ActionBar样式。

一,ActionBar样式定义

Theme主题对ActionBar样式的定义如下:

@android:style/Widget.Spinner.DropDown

@android:style/Widget.ActionButton

@android:style/Widget.ActionButton.Overflow

@android:drawable/cab_background_top_holo_dark

@null

@android:drawable/ic_menu_close_clear_cancel

@android:drawable/ic_menu_cut_holo_dark

@android:drawable/ic_menu_copy_holo_dark

@android:drawable/ic_menu_paste_holo_dark

@android:drawable/ic_menu_selectall_holo_dark

@android:drawable/ic_menu_share_holo_dark

@android:drawable/ic_menu_find_holo_dark

@android:drawable/ic_menu_search

@style/Widget.ActionBar.TabView

@style/Widget.ActionBar.TabBar

@style/Widget.ActionBar.TabText

@style/Widget.ActionMode

@style/Widget.ActionButton.CloseMode

@android:style/Widget.ActionBar

?android:attr/actionBarStyle

@dimen/action_bar_default_height

?android:attr/popupWindowStyle

@android:style/TextAppearance.Holo.Widget.ActionBar.Menu

?android:attr/textColorPrimary

@null

?android:attr/dividerVertical

?android:attr/selectableItemBackground

@drawable/divider_vertical_dark

@drawable/divider_vertical_dark

@android:style/ButtonBar

?android:attr/buttonStyle

@android:style/SegmentedButton

这里定义了所有与ActionBar相关的属性,下面是Holo主题对ActionBar样式的定义,该样式对Theme定义的大部分ActionBar样式进行了重写,如下:

@android:style/Widget.Holo.Spinner.DropDown.ActionBar

@android:style/Widget.Holo.ActionButton

@android:style/Widget.Holo.ActionButton.Overflow

@android:drawable/cab_background_top_holo_dark

@android:drawable/cab_background_bottom_holo_dark

@android:drawable/ic_cab_done_holo_dark

@style/Widget.Holo.ActionBar.TabView

@style/Widget.Holo.ActionBar.TabBar

@style/Widget.Holo.ActionBar.TabText

@style/Widget.Holo.ActionMode

@style/Widget.Holo.ActionButton.CloseMode

@android:style/Widget.Holo.ActionBar

@dimen/action_bar_default_height

@android:style/Widget.Holo.PopupWindow.ActionMode

@null

@android:drawable/ic_menu_cut_holo_dark

@android:drawable/ic_menu_copy_holo_dark

@android:drawable/ic_menu_paste_holo_dark

@android:drawable/ic_menu_selectall_holo_dark

@android:drawable/ic_menu_share_holo_dark

@android:drawable/ic_menu_find_holo_dark

@android:drawable/ic_menu_search_holo_dark

?android:attr/listDivider

?android:attr/listDivider

@android:style/Holo.ButtonBar

?android:attr/borderlessButtonStyle

@android:style/Holo.SegmentedButton

这是系统HOLO主题对ActionBar样式的定义。从中可以看到有一些重要的样式属性定义,如actionBarStye、actionButtonStyle、actionModeStyle等。

二,样式属性actionBarStyle

样式属性actionBarStyle定义了ActionBar的基本样式。

@drawable/tab_indicator_holo

16dip

16dip

其父样式如下:

@android:drawable/action_bar_background

useLogo|showHome|showTitle

@android:drawable/action_bar_divider

?android:attr/actionBarSize

0dip

0dip

0dip

0dip

@android:style/TextAppearance.Widget.ActionBar.Title

@android:style/TextAppearance.Widget.ActionBar.Subtitle

@android:style/Widget.ProgressBar.Horizontal

@android:style/Widget.ProgressBar.Small

@android:layout/action_bar_home

其中,background定义了ActionBar的背景;

displayOptions定义了显示选项,这里声明了使用LOGO、显示Home以及Title。

homeLayout定义了ActionBar左边Home的布局,包括向左返回上一层那个箭头。

三,样式属性actionButtonStyle

样式属性actionButtonStyle定义了ActionBar上按钮的样式,比如ActionBar上的菜单按钮等。actionButtonStyle所引用的样式定义如下:

56dip

center

12dip

12dip

center

从上面的定义看出,它定义了Button的最小宽度、居中样式、左右padding以及图片的放缩方式。再看看该样式的父样式,如下:

?android:attr/actionBarItemBackground

12dip

12dip

56dip

?android:attr/actionBarSize

从这里看出,子样式重写了父样式中的一些属性,但保留了背景和最小高度。这个背景background属性经过两次引用,引用了HOLO的如下属性:@android:drawable/item_background_holo_dark

很明显的就能看出,该背景引用的是一个selector类型的drawable。下面是这个drawable的定义:

android:exitFadeDuration="@android:integer/config_mediumAnimTime">

这里就能看出各个状态下引用的是哪些背景图片了。

四,样式属性actionBarDivider

样式属性actionBarDivider定义了ActionBar操作项之间的分隔条。可以看出,它直接引用了另一个ActionBar相关属性 dividerVertical,其定义如下:

@drawable/divider_vertical_dark

通过分析,这里引用的drawable直接对应一张图片,而不是selector类型。

五,样式属性actionMenuTextAppearance和 actionMenuTextColor

样式属性actionMenuTextAppearance和actionMenuTextColor定义了菜单的文本样式与颜色。

12sp

bold

?android:attr/actionMenuTextColor

true

六,样式属性actionBarWidgetThem

样式属性actionBarWidgetTheme为被添加到ActionBar的操作栏中的Widget定义主题资源。

七,样式属性actionBarStyle

样式属性actionBarStyle定义了ActionBar的基本样式。

@android:style/TextAppearance.Holo.Widget.ActionBar.Title

@android:style/TextAppearance.Holo.Widget.ActionBar.Subtitle

@android:drawable/ab_transparent_dark_holo

@android:drawable/ab_stacked_transparent_dark_holo

@android:drawable/ab_bottom_transparent_dark_holo

?android:attr/dividerVertical

@android:style/Widget.Holo.ProgressBar.Horizontal

@android:style/Widget.Holo.ProgressBar

32dip

8dip

其父样式如下:

@android:drawable/action_bar_background

useLogo|showHome|showTitle

@android:drawable/action_bar_divider

?android:attr/actionBarSize

0dip

0dip

0dip

0dip

@android:style/TextAppearance.Widget.ActionBar.Title

@android:style/TextAppearance.Widget.ActionBar.Subtitle

@android:style/Widget.ProgressBar.Horizontal

@android:style/Widget.ProgressBar.Small

@android:layout/action_bar_home

八,样式属性actionBarTabStyle

样式属性 actionBarTabStyle为Tab页的标签定义样式,其引用样式如下:

@drawable/tab_indicator_holo

16dip

16dip

其background属性定义了tab标签的背景,其也是selector类型的drawable。下面是该drawable的具体定义:

九,样式属性actionBarTabBarStyle

样式属性actionBarTabBarStyle定义了Tab标签之间分隔条。

?android:attr/actionBarDivider

middle

12dip

可以看出,divider引用的资源与前面菜单分隔条引用的资源是相同的。

十,样式属性actionBarTabTextStyle

样式属性 actionBarTabTextStyle定义了Tab的文本样式,如下:

@style/TextAppearance.Holo.Medium

?android:attr/textColorPrimary

12sp

bold

true

marquee

2

十一,样式属性actionDropDownStyle

样式属性 actionDropDownStyle定义了下拉导航列表的样式,如下:

@android:drawable/spinner_ab_holo_dark

其祖先样式:

@android:drawable/spinner_background_holo_dark

@android:drawable/list_selector_holo_dark

@android:drawable/menu_dropdown_panel_holo_dark

0dip

0dip

wrap_content

@android:layout/simple_dropdown_hint

left|center_vertical

十二,其他

在与ActionBar相关的样式中还定义了ActionMode的样式,但ActionMode与ActionBar是属于两个不同类型的控件,这里就不对ActionMode进行介绍了。

通过上面对ActionBar样式的分析,我们就可能很容易在项目中根据实际需求对ActionBar的样式进行修改,特别是在主题切换功能中,要求对ActinBar的样式有比较全面深入的了解。除了ActionBar的样式之外,了解Android系统时何时创建ActionBar、以及根据不同feature创建不同的ActionBar也是非常重要的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值