ActionBar的自定义样式

res/values,res/values-v11,res/values-v14下styles.xml全部改成相同内容。为了兼容android 2.x 修改res/values/styles.xml相关属性时去掉“android:”。

背景

“android:background”——ActionBar本身的背景。

“android:backgroundStacked”——ActionBar被分离时Tab的背景。

“android:backgroundSplit”——ActionBar Item在分割到底部时的背景。

<resources xmlns:android="http://schemas.android.com/apk/res/android">    <style name="AppBaseTheme" parent="@style/Theme.AppCompat">        <item name="actionBarStyle">@style/MyActionBar</item>    </style>    <style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar">        <item name="background">@drawable/A</item>        <item name="backgroundStacked">@drawable/B</item>        <item name="backgroundSplit">@drawableC</item>    </style>        <!-- Application theme. -->    <style name="AppTheme" parent="AppBaseTheme"></style></resources>

字体

“android:titleTextStyle”——ActionBar本身的字体。

“android:actionBarTabTextStyle”——ActionBar被分离时Tab的字体。

<resources xmlns:android="http://schemas.android.com/apk/res/android">    <style name="AppBaseTheme" parent="@style/Theme.AppCompat">        <item name="titleTextStyle">@style/MyActionBarTitleText</item>        <item name="actionBarTabTextStyle">@style/MyActionBarTabText</item>    </style>    <style name="MyActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">        <item name="android:textColor">#fff</item>        <item name="android:textSize">20sp</item>        <item name="android:textStyle">bold</item>    </style>    <style name="MyActionBarTabText" parent="@style/Widget.AppCompat.ActionBar.TabText">        <item name="android:textColor">#fff</item>        <item name="android:textSize">20sp</item>        <item name="android:textStyle">bold</item>    </style>    <!-- Application theme. -->    <style name="AppTheme" parent="AppBaseTheme"></style></resources>

“android:titleTextStyle”,经测试此方法在android 2.x上无效。

附上在android 2.x有效代码。

actionBar = getSupportActionBar();// 自定义字体SpannableString spannableString = new SpannableString("TimeToDo");// 设置字体spannableString.setSpan(new TypefaceSpan("monospace"), 0,spannableString.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);// 字体大小spannableString.setSpan(new AbsoluteSizeSpan(40, true), 0,spannableString.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);// 字体颜色spannableString.setSpan(new ForegroundColorSpan(Color.MAGENTA), 0,spannableString.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);//ActionBar本身的字体actionBar.setTitle(spannableString);  

Tab Indicator

“android:actionBarTabStyle”——Tab Indicator样式。

<resources xmlns:android="http://schemas.android.com/apk/res/android">    <style name="AppBaseTheme" parent="@style/Theme.AppCompat">        <item name="actionBarTabStyle">@style/MyActionBarTabs</item>    </style>    <style name="MyActionBarTabs" parent="@style/Widget.AppCompat.ActionBar.TabView">        <item name="android:background">@drawable/actionbar_tab_indicator</item>    </style>    <!-- Application theme. -->    <style name="AppTheme" parent="AppBaseTheme"></style></resources>

res/drawable/actionbar_tab_indicator.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:state_selected="false"          android:state_pressed="false"          android:drawable="@drawable/tab_unselected" />    <item android:state_selected="true"          android:state_pressed="false"          android:drawable="@drawable/tab_selected" />    <item android:state_selected="false"          android:state_pressed="true"          android:drawable="@drawable/tab_unselected_pressed" />    <item android:state_selected="true"          android:state_pressed="true"          android:drawable="@drawable/tab_selected_pressed" /></selector>

Spinner

"android:actionDropDownStyle"——下拉框背景(包括选中/按下/j解除状态)。

"android:dropDownListViewStyle"——下拉列表背景(包括选中/按下/解除状态)。

"android:spinnerDropDownItemStyle"——下拉框及列表字体。

<resources xmlns:android="http://schemas.android.com/apk/res/android">    <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">        <item name="actionDropDownStyle">@style/MyDropDownNav</item>        <item name="dropDownListViewStyle">@style/MyDropDownListView</item>        <item name="spinnerDropDownItemStyle">@style/MyDropDownItemStyle</item>    </style>    <style name="MyDropDownNav" parent="@style/Widget.AppCompat.Base.Spinner">        <item name="android:background">@drawable/mab_spinner_background_holo_dark</item>        <item name="android:popupBackground">@drawable/abc_menu_dropdown_panel_holo_dark</item>    </style>    <style name="MyDropDownListView" parent="@style/Widget.AppCompat.Base.ListView.DropDown">        <item name="android:listSelector">@drawable/mab_selectable_background</item>    </style>    <style name="MyDropDownItemStyle" parent="@style/Widget.AppCompat.Base.DropDownItem.Spinner">        <item name="android:textAppearance">@style/MyDropDownItemTextStyle</item>    </style>    <style name="MyDropDownItemTextStyle" parent="@style/Widget.AppCompat.Spinner.DropDown.ActionBar">        <item name="android:textColor">#FFFFFF</item>    </style>    <!-- Application theme. -->    <style name="AppTheme" parent="AppBaseTheme"></style></resources>

mab_selectable_background

<selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:drawable="@drawable/@drawable/abc_list_pressed_holo_dark" android:state_pressed="true"/></selector>

mab_spinner_background_holo_light.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:drawable="@drawable/abc_spinner_ab_pressed_holo_dark" android:state_pressed="true"/>    <item android:drawable="@drawable/abc_spinner_ab_disabled_holo_dark" android:state_enabled="false"/>    <item android:drawable="@drawable/abc_spinner_ab_focused_holo_dark" android:state_focused="true" android:state_pressed="false"/>    <item android:drawable="@drawable/abc_spinner_ab_default_holo_dark"/></selector>

其他

“android:actionBarSize”——ActionBar高度。

——无

“android:actionButtonStyle”——菜单按钮背景。

——@style/Widget.AppCompat.ActionButton

“android:actionOverflowButtonStyle”——Overflow背景。

——@style/Widget.AppCompat.ActionButton.Overflow

“android:selectableItemBackground”——Home按钮背景。

——无

“android:actionBarDivider”——分隔线背景。

——无

“android:actionMenuTextAppearance”——菜单按钮文本样式。

——无

“android:actionMenuTextColor”——菜单按钮文本颜色。

——无

已知不能更改的属性:二级菜单、ActionBar标题(可通过代码实现)。

已知问题:在Android 4.x会二次加载界面(第一次为原始ActionBar样式)。

更多相关文章

  1. Android 常用样式设置
  2. android shape设置背景风格为圆角
  3. Android 字体颜色渐变效果 Span实现
  4. Android 如何修改默认的Tab样式
  5. Android边框背景
  6. [android]浅谈android的selector,背景选择器
  7. android设置系统语言,字体大小,字体样式导致widget控件失效
  8. Android RadioButton背景图片和文字的相对位置

随机推荐

  1. Android中蓝牙模块的使用
  2. Android高手进阶教程(三)之----Android(
  3. android -- 蓝牙 bluetooth (一) 入门
  4. Android(安卓)关于嵌套listView时onItemC
  5. Android中通过typeface设置字体
  6. ( 转)关于Android的nodpi,xhdpi,hdpi,mdp
  7. android notification
  8. [React Native Android(安卓)安利系列]原
  9. Android导入工程提示 Invalid project de
  10. Android(安卓)项目结构图