转载请注明出处:http://blog.csdn.net/yegongheng/article/details/38659147
上一篇文章我们初步了解了ActionBar的概念及为ActionBar自定义添加不同的Action item,Action View以及Action Provider等实现方法,接下来的这一片文章我们将讨论如何为ActionBar自定义不同的Style(样式),实现具有自己独特风格的Action Bar。
自定义Actionbar Style
在上一篇讲解ActionBar的文章开头,我们在AndroidManifest.xml文件中声明的<activity/>组件中使用android:theme属性来为Activity引入ActionBar并设置Theme Style(主题样式),不过我们使用的Theme Style是Android系统自身提供的,样式显得着实单调不够有个性,那我们能不能DIY出自己想要的Theme Style呢?答案当然是yes,下面我将带领大家一步一步去自定义我们想要的ActionBar Theme Style。
我们知道,在项目目录结构AndroidManifest.xml文件中需要设置<uses-sdk/>节点,例如:
<uses-sdk
android:minSdkVersion="8"
android:maxSdkVersion="14"
android:targetSdkVersion="19" />
该节点主要功能是为APP设置所运行Android系统的最低运行版本、目标运行版本和最高运行版本的属性。有这里需要注意的是,鉴于Android系统版本的差异性,在自定义Theme style的过程中应根据应用所需运行的最低系统版本而进行不同的设置,简单来讲就是在不同Android系统版本上,设置同样功能的Theme Style,设置属性方式会有所不用。其中差异最大的的是Android3.0(level 11)之前和之后的系统版本,虽然目前使用Android3.0之前版本系统的手机已经非常少,但为了提高我们应用的兼容性,我们在这里实现Android Theme Style时,会分别实现兼容Android3.0(level 11)及以上和Android2.1(level 7)及以上的两种属性设置方式。下面就进入我们自定义ActionBar Theme Style的实验中。
自定义ActionBar背景
我们拿实例中的Scr
eenSecondActivity实验,为其ActionBar自定义Theme Style,首先看一下该ActionBar默认的Theme Style,如图下:
接着我们设置ActionBar的背景, 首先我们在项目中的res/values/styles.xml文件中定义自己的<style/>节点,名为MyActionBarTheme,然后再设置相关ActionBar背景属性。
具体代码如下:
<!-- 第二步 -->
<!-- Android3.0及以上ActionBar自定义的样式主题 -->
<style name="MyActionBarTheme" parent="@android:style/Theme.Holo">
<!-- 设置ActionBar Style -->
<item name="android:actionBarStyle">@style/MyActionBar</item>
<!--设置ActionBar中ActionItems的背景和点击选中时的style -->
<item name="android:selectableItemBackground">@drawable/choose_action_items_background</item>
</style>
<!--Android3.0及以上ActionBar样式-->
<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
<!--设置ActionBar的背景-->
<item name="android:background">@color/actionbar_background</item>
<!--设置ActionBar的标题的样式-->
<item name="android:titleTextStyle">@style/ActionBarTextStyle</item>
</style>
<!--Android3.0及以上ActionBar字体样式 -->
<style name="ActionBarTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
<item name="android:textColor">@color/actionbar_tab_textcolor</item>
</style>
<!---------------------------------------------------------------------->
<!--Android2.1及以上ActionBar自定义的样式主题 -->
<style name="MyActionBarTheme" parent="@style/Theme.AppCompat">
<!-- 设置ActionBar Style -->
<item name="actionBarStyle">@style/MyActionBar</item>
<!--设置ActionBar中ActionItems的背景和点击选中时的style -->
<item name="selectableItemBackground">@drawable/choose_action_items_background<