ActionBar(11)样式相关的属性表及重要属性

 

一,ActionBar 相关样式属性

android:Theme主题 [  sdk/platforms/android-21/data/res/values/themes.xml  ] 

ActionBar定义的样式属性如下:name="XXXX" XXX就是,这些可以自定义.


@style/Widget.Spinner.DropDown
@style/Widget.ActionButton
@style/Widget.ActionButton.Overflow
?attr/popupMenuStyle
@drawable/cab_background_top_holo_dark
@null
@drawable/ic_menu_close_clear_cancel
@drawable/ic_menu_cut_holo_dark
@drawable/ic_menu_copy_holo_dark
@drawable/ic_menu_paste_holo_dark
@drawable/ic_menu_selectall_holo_dark
@drawable/ic_menu_share_holo_dark
@drawable/ic_menu_find_holo_dark
@drawable/ic_menu_search
@style/Widget.ActionBar.TabView
@style/Widget.ActionBar.TabBar
@style/Widget.ActionBar.TabText
@style/Widget.ActionMode
@style/Widget.ActionButton.CloseMode
@style/Widget.ActionBar
?attr/actionBarStyle
@dimen/action_bar_default_height
?attr/popupWindowStyle
@style/TextAppearance.Holo.Widget.ActionBar.Menu
?attr/textColorPrimary
@null
@null
@null
?attr/dividerVertical
?attr/selectableItemBackground

@style/Widget.Toolbar

@drawable/divider_vertical_dark
@drawable/divider_vertical_dark
@style/ButtonBar
?attr/buttonStyle
?attr/buttonBarButtonStyle
?attr/buttonBarButtonStyle
?attr/buttonBarButtonStyle
@style/SegmentedButton

android:Theme.Holo主题 [  sdk/platforms/android-21/data/res/values/themes_holo.xml  ] 

ActionBar样式的定义,如下:该样式对Theme定义的大部分ActionBar样式进行了重写


@style/Widget.Holo.Spinner.DropDown.ActionBar
@style/Widget.Holo.ActionButton
@style/Widget.Holo.ActionButton.Overflow
?attr/popupMenuStyle
@drawable/cab_background_top_holo_dark
@drawable/cab_background_bottom_holo_dark
@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
@style/Widget.Holo.ActionBar
@dimen/action_bar_default_height
@style/Widget.Holo.PopupWindow.ActionMode
@null
@null
@null

@drawable/ic_menu_cut_holo_dark
@drawable/ic_menu_copy_holo_dark
@drawable/ic_menu_paste_holo_dark
@drawable/ic_menu_selectall_holo_dark
@drawable/ic_menu_share_holo_dark
@drawable/ic_menu_find_holo_dark
@drawable/ic_menu_search_holo_dark

?attr/listDivider
?attr/listDivider
@style/Holo.ButtonBar
?attr/borderlessButtonStyle
@style/Holo.SegmentedButton

从中可以看到有一些重要的样式属性定义,如 actionBarStye actionButtonStyle actionModeStyle 等。

二, 重要样式属性actionBarStyle

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

 

  

其父样式如下:


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

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

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

 

三,重要样式属性actionButtonStyle

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

 

  

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

 


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

@android:drawable/item_background_holo_dark

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

 


    
    
    
    
    
    

 

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

 

四,重要样式属性actionBarDivider

 

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

 

@drawable/divider_vertical_dark

 

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

 

 

 

五,重要样式属性actionMenuTextAppearance  actionMenuTextColor

 

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

  


 

六,重要样式属性actionBarWidgetTheme

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

七,重要样式属性actionBarTabStyle

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

    

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

 


    
    
    

    
    
    

    
    
    
    

    
    
    

 

八, 重要样式属性actionBarTabBarStyle

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

 

    

 

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

 

,重要样式属actionBarTabTextStyle

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

 

    

 

十,重要样式属性actionDropDownStyle

 

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

 

    

 

其祖先样式:

 

   

 

十一,其他

 

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

 

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

你可能感兴趣的:(ActionBar)