前言:这东西梳理过好几次,但每次到要用的时候就又忘了,所以今天决定,把他写成博客,以防忘记。。。
先贴一段示例模板吧!需要的可以根据注释更改相应属性,代码比较好理解就不讲解了。
(代码中,可以更改通知栏的背景颜色、ActionBar的背景颜色、一些UI组件的颜色、ActionBar的title样式(如字体颜色,大小))
<resources>
<!-- Android Studio 自动生成的App样式. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<!--自定义的App样式-->
<style name="MyAppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!--<item name="colorPrimary">@color/orange</item> <!–ActionBar的背景颜色–>-->
<!--<item name="colorPrimaryDark">@color/red</item> <!–通知栏的背景颜色–>-->
<!--<item name="colorAccent">@color/colorAccent</item> <!–一些UI组件的颜色,如EditText光标颜色、switch背景颜色–>-->
<item name="actionBarStyle">@style/MyActionBarStyle</item> <!--自定义的ActionBar样式,优先级高于上面的几种方式-->
</style>
<!--自定义ActionBar样式,需要在App样式中进行引用-->
<style name="MyActionBarStyle" parent="Widget.AppCompat.ActionBar">
<item name="android:background">@color/blue</item> <!--ActionBar的背景颜色-->
<item name="background">@color/blue</item> <!--ActionBar的背景颜色-->
<item name="android:titleTextStyle">@style/MyActionBarTitle</item> <!--ActionBar的title样式-->
<item name="titleTextStyle">@style/MyActionBarTitle</item> <!--ActionBar的title样式-->
</style>
<!--自定义ActionBar的title样式,需要在ActionBar样式中进行引用-->
<style name="MyActionBarTitle" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textColor">@color/white</item> <!--ActionBar Title的字体颜色-->
<item name="android:textSize">25dp</item> <!--ActionBar Title的字体大小-->
</style>
</resources>
有人觉得写样式很麻烦,问有没有什么简便的方法?
答案当然是有喽,Android样式生成器,一个可视化的样式编辑器,设计好我们的样式后,下载jar包,就可以得到我们需要的样式文件了。还是不知道Android样式生成器怎么用?可以看看极客学院的视频 自定义ActionBar样式,视频前半部分介绍自定义样式,后半部分讲解Android样式生成器的用法。
还有两个不属于Style样式的东西。但因为比较常用,所以决定介绍一下
1、在ActionBar上添加按钮
这个功能其实应该归类为菜单的,方法即是在定义optionMenu菜单时,为菜单项指定 android:icon="@mipmap/ic_launcher"属性和showAsAction="always"属性。实例代码如下
<menu xmlns:android="http:///apk/res/android"
xmlns:app="http:///apk/res-auto">
<item
android:id="@+id/search"
android:icon="@mipmap/ic_launcher"
android:title="搜索"
app:showAsAction="always" />
</menu>
编写好菜单文件之后,下一步就是把写好的菜单文件加载到Activity中了。在Activity中重写onCreateOptionsMenu方法,解析刚编写好的菜单文件即可。不懂optionMune菜单可参考如下博客 菜单menu。实例代码如下
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu,menu); //解析菜单
return super.onCreateOptionsMenu(menu);
}
2、在ActionBar上添加返回按钮
这个就很简单了, 在onCreate方法中添加getSupportActionBar().setDisplayHomeAsUpEnabled(true);就可以了(如果不行就换成getActionBar().setDisplayHomeAsUpEnabled(true);这个主要是由于API版本的原因)。实例代码如下
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
添加完按钮不加点击事件的都是流氓
如何为返回按钮添加点击事件呢?返回按钮其实也相当于一个OptionMenu菜单项,所以在onOptionsItemSelected方法中加入点击事件即可。Android系统为返回按钮自动分配了一个ID:android.R.id.home 示例代码如下
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch (item.getItemId()){
case android.R.id.home:
finish();
break;
}
return true;
}