设定ActionBar的样式,是我们必须掌握的技能,在之前我们可能都需要一行一行的写代码,然后在模拟器上测试效果,但是现在我们有个一个很棒的工具来设定样式。设定ActionBar样式的工作从未如此简单过!

http://romannurik.github.io/AndroidAssetStudio/index.html

进入后我们就可以直接在可视化的界面中进行修改了,设定好后直接下载压缩包。复制到res目录下即可。最后要记得把Application或者Activity的主题修改为你做的主题名哦~

顺便补充一个设置ActionBar背景的方法:

  1. getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(R.id.icon));

下面是我这个主题的style:styles_mycompattheme.xml(这里的文件是V14的,详细的请下载源码)

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- File created by the Android Action Bar Style Generator
  3.  
  4. Copyright (C) 2011 The Android Open Source Project
  5. Copyright (C) 2012 readyState Software Ltd
  6.  
  7. Licensed under the Apache License, Version 2.0 (the "License");
  8. you may not use this file except in compliance with the License.
  9. You may obtain a copy of the License at
  10.  
  11. http://www.apache.org/licenses/LICENSE-2.0
  12.  
  13. Unless required by applicable law or agreed to in writing, software
  14. distributed under the License is distributed on an "AS IS" BASIS,
  15. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  16. See the License for the specific language governing permissions and
  17. limitations under the License.
  18. -->
  19.  
  20. <resources>
  21.  
  22. <style name="Theme.Mycompattheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
  23. <item name="android:actionBarItemBackground">@drawable/selectable_background_mycompattheme</item>
  24. <item name="android:popupMenuStyle">@style/PopupMenu.Mycompattheme</item>
  25. <item name="android:dropDownListViewStyle">@style/DropDownListView.Mycompattheme</item>
  26. <item name="android:actionBarTabStyle">@style/ActionBarTabStyle.Mycompattheme</item>
  27. <item name="android:actionDropDownStyle">@style/DropDownNav.Mycompattheme</item>
  28. <item name="android:actionBarStyle">@style/ActionBar.Solid.Mycompattheme</item>
  29. <item name="android:actionModeBackground">@drawable/cab_background_top_mycompattheme</item>
  30. <item name="android:actionModeSplitBackground">@drawable/cab_background_bottom_mycompattheme</item>
  31. <item name="android:actionModeCloseButtonStyle">@style/ActionButton.CloseMode.Mycompattheme</item>
  32.  
  33. <!-- Light.DarkActionBar specific -->
  34. <item name="android:actionBarWidgetTheme">@style/Theme.Mycompattheme.Widget</item>
  35.  
  36. </style>
  37.  
  38. <style name="ActionBar.Solid.Mycompattheme" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
  39. <item name="android:background">@drawable/ab_background_textured_mycompattheme</item>
  40. <item name="android:backgroundStacked">@drawable/ab_stacked_solid_mycompattheme</item>
  41. <item name="android:backgroundSplit">@drawable/ab_background_textured_mycompattheme</item>
  42. <item name="android:progressBarStyle">@style/ProgressBar.Mycompattheme</item>
  43. </style>
  44.  
  45. <style name="ActionBar.Transparent.Mycompattheme" parent="@style/Widget.AppCompat.ActionBar">
  46. <item name="android:background">@drawable/ab_transparent_mycompattheme</item>
  47. <item name="android:progressBarStyle">@style/ProgressBar.Mycompattheme</item>
  48. </style>
  49.  
  50. <!-- this style is only referenced in a Light.DarkActionBar based theme -->
  51. <style name="Theme.Mycompattheme.Widget" parent="@style/Theme.AppCompat">
  52. <item name="android:popupMenuStyle">@style/PopupMenu.Mycompattheme</item>
  53. <item name="android:dropDownListViewStyle">@style/DropDownListView.Mycompattheme</item>
  54. </style>
  55.  
  56. </resources>

当然,如果你觉得你想修改Menu和Tab上面的字体,设置个颜色什么的。那么下面的设置一定可以满足你的需要。

更详细的定义可以参考:http://blog.csdn.net/gebitan505/article/details/12157027

这里定义了Tab中字体的大小和颜色,定义了Menu的字体的大小和颜色,定义了返回按钮和分割栏的图片。

部分代码如下,这个是在之前的代码中修改的。

  1. <style name="Theme.Mycompattheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
  2.  
  3. <!-- 定义ActionBar左边小箭头的图片 -->
  4. <item name="android:homeAsUpIndicator">@drawable/ic_search</item>
  5. <!-- 设置ActionBar的高度 -->
  6. <item name="android:actionBarSize">60dip</item>
  7. <!-- 设置Menu的颜色 -->
  8. <item name="android:actionMenuTextColor">#ff0000</item>
  9. <!-- 设置Menu的字体样式 -->
  10. <item name="android:actionMenuTextAppearance">@style/MyMenuTextStyle</item>
  11. <!-- 设置ActionBar Tab字体的样式 -->
  12. <item name="android:actionBarTabTextStyle">@style/MyTabTextStyle</item>
  13. <!-- 定义Tab之间的分割线的图片 -->
  14. <item name="android:actionBarDivider">@drawable/ic_search</item>
  15.  
  16.     省略了由工具生成的代码……
  17.  
  18. </style>
  19.  
  20. <!-- Menu的样式 -->
  21. <style name="MyMenuTextStyle">
  22. <item name="android:textSize">30sp</item>
  23. </style>
  24.  
  25. <!-- Tab字体的颜色、字体等样式 -->
  26. <style name="MyTabTextStyle" parent="@style/Widget.AppCompat.Light.ActionBar.TabText">
  27. <item name="android:textColor">#0000ff</item>
  28. <item name="android:textSize">18sp</item>
  29. </style>

至于定义actionbar上面的进度条样式的可以看这篇文章:http://www.myexception.cn/mobile/1356045.html

更加详细全面的ActionBar的样式的修改可以看这里:http://blog.csdn.net/guolin_blog/article/details/25466665 (推荐)

源码下载:http://download.csdn.net/detail/shark0017/7690915

低版本系统兼容的ActionBar(五)修改ActionBar的全套样式,从未如此简单过的更多相关文章

  1. 低版本系统兼容的ActionBar(一)设置颜色+添加Menu+添加ActionMode

        之前我一直用ActionBarSherlock这个开源项目来做ActionBar,因为它可以让低版本的设备也能用上ActionBar.但是在最新的SDK中Google提供了一个AppCompa ...

  2. 低版本系统兼容的ActionBar(二)ActionProvider+分离式ActionBar+分离式的ActionMode

           这篇文章主要讲的是在低版本兼容的ActionBar中实现自定义的ActionProvider,ShareActionProvider的使用方法,如何实现分离式ActionBar,外加在分 ...

  3. 低版本系统兼容的ActionBar(六)用Fragment+ViewPager+Tab实现快速导航

    Tab经常和Fragment结合使用,这一讲我们用3种方式来实现这种快捷导航. 0.重要的两个监听器 MyTabListener,这个我们之前已经接触过了 package com.kale.actio ...

  4. 低版本系统兼容的ActionBar(四)添加Tab+添加自定义的Tab视图+Fragment

    在ActionBar中添加Tab是很有用的技巧.在support V7库的支持下,我们几乎可以用和之前一样的方式来添加Tab,对于Tab来说,我们可以和MenuItem一样,给他定义自己的视图.我这里 ...

  5. 低版本系统兼容的ActionBar(七)自定义Actionbar标题栏字体

    这个自定义字体其实和ActionBar有关,但之前写AtionBar的时候没考虑到修改字体样式,今天看到一篇专门写这个的文章就贴上使用方式.╮(╯▽╰)╭,不得不说Actionbar的那个样式真是让人 ...

  6. 低版本系统兼容的ActionBar(三)自定义Item视图+进度条的实现+下拉导航+透明ActionBar

           一.自定义MenuItem的视图 custom_view.xml (就是一个单选按钮) <?xml version="1.0" encoding="u ...

  7. hyperscan在低版本系统应用问题

    编译环境:centos6.3 32位/64位 由于hyperscan使用许多C++11特性,在低版本系统gcc版本不能编译.后来发现在runtime时也就是hs_scan时只需要依赖libhs_run ...

  8. Android 高版本API方法在低版本系统上的兼容性处理

    Android 版本更替,新的版本带来新的特性,新的方法. 新的方法带来许多便利,但无法在低版本系统上运行,如果兼容性处理不恰当,APP在低版本系统上,运行时将会crash. 本文以一个具体的例子说明 ...

  9. 低版本Flume兼容高版本elasticsearch

    Flume更新比较慢,而elasticsearch更新非常快所以当涉及更换elasticsearch版本时会出现不兼容问题. apache-flume-1.6.0+elasticsearch1.5.1 ...

随机推荐

  1. shell学习(三)

    libvirt用于管理KVM本身的工具 virt-install用于安装虚拟机需要的安装包,安装虚拟机 virt-mananger:管理创建删除虚拟机的工具 ---恢复内容开始--- 1    gre ...

  2. Codeforces Round #355 (Div. 2) D. Vanya and Treasure

    题目大意: 给你一个n × m 的图,有p种宝箱, 每个点上有一个种类为a[ i ][ j ]的宝箱,a[ i ][ j ] 的宝箱里有 a[ i ][ j ] + 1的钥匙,第一种宝箱是没有锁的, ...

  3. HDU4632 Poj2955 括号匹配 整数划分 P1880 [NOI1995]石子合并 区间DP总结

    题意:给定一个字符串 输出回文子序列的个数    一个字符也算一个回文 很明显的区间dp  就是要往区间小的压缩! #include<bits/stdc++.h> using namesp ...

  4. 阿里云 rds python sdk不支持python3处理

    阿里云文档中心的python版本aliyun-python-sdk-rds不支持python3处理 问题:默认情况下文档中心的python版本只支持python2,不兼容python3版本 需要稍微修 ...

  5. mysql创建索引笔记

    1.添加PRIMARY KEY(主键索引.就是 唯一 且 不能为空.): ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.添加UNIQU ...

  6. 19. 删除链表的倒数第N个节点

    19. 删除链表的倒数第N个节点 题意 删除链表的倒数第N个结点 解题思路 先让快结点移动n个位置,接着再让慢结点和快结点同时移动,发现出慢结点就是要删除的结点,将前结点指向删除结点的下一个结点即可: ...

  7. Gitlab使用QQ企业邮箱发送邮件

    注册QQ企业邮箱 地址 https://exmail.qq.com/signupfree?refer=intro#signup/free 注册完成后解析 编辑/etc/gitlab/gitlab.rb ...

  8. [Java]如何把当前时间插入到数据库

    [Java]如何把当前时间插入到数据库 1.在orderDao.java中 /** 设置订单*/ public void setOrder(Order order){ Date time = new ...

  9. Codeforces Round #281 (Div. 2) B. Vasya and Wrestling 水题

    B. Vasya and Wrestling 题目连接: http://codeforces.com/contest/493/problem/B Description Vasya has becom ...

  10. Gym 100646 Problem E: Su-Su-Sudoku 水题

    Problem E: Su-Su-Sudoku/center> 题目连接: http://codeforces.com/gym/100646/attachments Description By ...