首先注意个问题
values-v11代表在API 11+的设备上,用该目录下的styles.xml代替res/values/styles.xml
values-v14代表在API 14+的设备上,用该目录下的styles.xml代替res/values/styles.xml
其中API 11+代表android 3.0 +
其中API 14+代表android 4.0 +
不同的android版本使用的样式文件是不一样,有些样式在不同版本定义不大一样,的这点注意
一:系统默认actionbar样式介绍
Theme.Holo,则默认是黑底白字,Theme.Holo.Light,也就是说默认背景是白底黑字
二:更改actionbar背景色
1:values-v14下
打开values-v14下的styles加入
<style name="MyTheme" parent="android:Theme.Holo.Light.DarkActionBar" >
<!-- <item name="android:windowTitleBackgroundStyle">@style/style_bg_bar</item> -->
<item name="android:actionBarStyle">@style/MyActionBar</item>
<!-- <item name="android:actionModeBackground">@style/style_bg_bar</item> -->
</style>
<style name="MyActionBar"
parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
<item name="android:background">@drawable/actionbar_background</item>
</style>
首先看看该styles里边默认继承的是什么,自定义的就继承他就行了,里边的样式可以按住ctrl+鼠标转到定义(eclipse快捷键),
可以看到里边的样式定义,那些是我们可以重写的
例如我们转到系统自动的parent="android:Theme.Holo.Light.DarkActionBar"中去,可以看到系统定义了很多属性,
这些都是我们可以覆盖重写的
上边我们只重写了:android:actionBarStyle属性
android:actionBarStyle原来是使用系统自带的@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse
需要我们最好继承他去修改其中我们想改的东西,不然需要每个都重写,还有如果自己写有些属性本身没有在他里边定义的,
android运行解析的时候会报错的
同样@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse里边具体定义了什么我们可以用ctrl+鼠标点击查看
我们使用上边自定义的样式android:theme="@style/MyTheme"
三:更改actionbar title 标题颜色
重写android:actionBarStyle的android:titleTextStyle即可
<style name="MyActionBar"
parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
<item name="android:background">@drawable/actionbar_background</item>
<item name="android:titleTextStyle">@style/AcBar_titleStyle</item>
</style>
<style name="AcBar_titleStyle">
<item name="android:textSize">18sp</item>
<item name="android:textColor">#FF00ff</item>
</style>
四:修改Actionbar下拉框Navigation的样式
- -为了修改这个颜色纠结得够,一直想用继承覆盖样式的方法去修改,始终未果,有会的望告知!
虽然直接修改样式不行只有换个思路换个方法,Navigation是使用的spinner,spinner可以通过自定义Adapter或修改布局文件控制.
1:修改Navigation使用的布局文件
默认使用的是android.R.layout.simple_spinner_dropdown_item,好了看源代码复制出来,只修改下字体颜色,然后用我们自定义就行了,
这样一想改这个颜色就变得非常简单了^_^
<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerDropDownItemStyle"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="50dp"
android:ellipsize="marquee"
android:textColor="#ff00ff"
android:textAlignment="inherit"/>
ArrayAdapter<Object> adapter = new ArrayAdapter<Object>(
getActivity().getBaseContext(),
R.layout.my_simple_spinner_dropdown_item, actions);