低版本系统兼容的ActionBar(五)修改ActionBar的全套样式,从未如此简单过
设定ActionBar的样式,是我们必须掌握的技能,在之前我们可能都需要一行一行的写代码,然后在模拟器上测试效果,但是现在我们有个一个很棒的工具来设定样式。设定ActionBar样式的工作从未如此简单过!
http://romannurik.github.io/AndroidAssetStudio/index.html
进入后我们就可以直接在可视化的界面中进行修改了,设定好后直接下载压缩包。复制到res目录下即可。最后要记得把Application或者Activity的主题修改为你做的主题名哦~
顺便补充一个设置ActionBar背景的方法:
- getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(R.id.icon));
下面是我这个主题的style:styles_mycompattheme.xml(这里的文件是V14的,详细的请下载源码)
- <?xml version="1.0" encoding="utf-8"?>
- <!-- File created by the Android Action Bar Style Generator
- Copyright (C) 2011 The Android Open Source Project
- Copyright (C) 2012 readyState Software Ltd
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- -->
- <resources>
- <style name="Theme.Mycompattheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
- <item name="android:actionBarItemBackground">@drawable/selectable_background_mycompattheme</item>
- <item name="android:popupMenuStyle">@style/PopupMenu.Mycompattheme</item>
- <item name="android:dropDownListViewStyle">@style/DropDownListView.Mycompattheme</item>
- <item name="android:actionBarTabStyle">@style/ActionBarTabStyle.Mycompattheme</item>
- <item name="android:actionDropDownStyle">@style/DropDownNav.Mycompattheme</item>
- <item name="android:actionBarStyle">@style/ActionBar.Solid.Mycompattheme</item>
- <item name="android:actionModeBackground">@drawable/cab_background_top_mycompattheme</item>
- <item name="android:actionModeSplitBackground">@drawable/cab_background_bottom_mycompattheme</item>
- <item name="android:actionModeCloseButtonStyle">@style/ActionButton.CloseMode.Mycompattheme</item>
- <!-- Light.DarkActionBar specific -->
- <item name="android:actionBarWidgetTheme">@style/Theme.Mycompattheme.Widget</item>
- </style>
- <style name="ActionBar.Solid.Mycompattheme" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
- <item name="android:background">@drawable/ab_background_textured_mycompattheme</item>
- <item name="android:backgroundStacked">@drawable/ab_stacked_solid_mycompattheme</item>
- <item name="android:backgroundSplit">@drawable/ab_background_textured_mycompattheme</item>
- <item name="android:progressBarStyle">@style/ProgressBar.Mycompattheme</item>
- </style>
- <style name="ActionBar.Transparent.Mycompattheme" parent="@style/Widget.AppCompat.ActionBar">
- <item name="android:background">@drawable/ab_transparent_mycompattheme</item>
- <item name="android:progressBarStyle">@style/ProgressBar.Mycompattheme</item>
- </style>
- <!-- this style is only referenced in a Light.DarkActionBar based theme -->
- <style name="Theme.Mycompattheme.Widget" parent="@style/Theme.AppCompat">
- <item name="android:popupMenuStyle">@style/PopupMenu.Mycompattheme</item>
- <item name="android:dropDownListViewStyle">@style/DropDownListView.Mycompattheme</item>
- </style>
- </resources>
当然,如果你觉得你想修改Menu和Tab上面的字体,设置个颜色什么的。那么下面的设置一定可以满足你的需要。
更详细的定义可以参考:http://blog.csdn.net/gebitan505/article/details/12157027
这里定义了Tab中字体的大小和颜色,定义了Menu的字体的大小和颜色,定义了返回按钮和分割栏的图片。
部分代码如下,这个是在之前的代码中修改的。
- <style name="Theme.Mycompattheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
- <!-- 定义ActionBar左边小箭头的图片 -->
- <item name="android:homeAsUpIndicator">@drawable/ic_search</item>
- <!-- 设置ActionBar的高度 -->
- <item name="android:actionBarSize">60dip</item>
- <!-- 设置Menu的颜色 -->
- <item name="android:actionMenuTextColor">#ff0000</item>
- <!-- 设置Menu的字体样式 -->
- <item name="android:actionMenuTextAppearance">@style/MyMenuTextStyle</item>
- <!-- 设置ActionBar Tab字体的样式 -->
- <item name="android:actionBarTabTextStyle">@style/MyTabTextStyle</item>
- <!-- 定义Tab之间的分割线的图片 -->
- <item name="android:actionBarDivider">@drawable/ic_search</item>
- 省略了由工具生成的代码……
- </style>
- <!-- Menu的样式 -->
- <style name="MyMenuTextStyle">
- <item name="android:textSize">30sp</item>
- </style>
- <!-- Tab字体的颜色、字体等样式 -->
- <style name="MyTabTextStyle" parent="@style/Widget.AppCompat.Light.ActionBar.TabText">
- <item name="android:textColor">#0000ff</item>
- <item name="android:textSize">18sp</item>
- </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的全套样式,从未如此简单过的更多相关文章
- 低版本系统兼容的ActionBar(一)设置颜色+添加Menu+添加ActionMode
之前我一直用ActionBarSherlock这个开源项目来做ActionBar,因为它可以让低版本的设备也能用上ActionBar.但是在最新的SDK中Google提供了一个AppCompa ...
- 低版本系统兼容的ActionBar(二)ActionProvider+分离式ActionBar+分离式的ActionMode
这篇文章主要讲的是在低版本兼容的ActionBar中实现自定义的ActionProvider,ShareActionProvider的使用方法,如何实现分离式ActionBar,外加在分 ...
- 低版本系统兼容的ActionBar(六)用Fragment+ViewPager+Tab实现快速导航
Tab经常和Fragment结合使用,这一讲我们用3种方式来实现这种快捷导航. 0.重要的两个监听器 MyTabListener,这个我们之前已经接触过了 package com.kale.actio ...
- 低版本系统兼容的ActionBar(四)添加Tab+添加自定义的Tab视图+Fragment
在ActionBar中添加Tab是很有用的技巧.在support V7库的支持下,我们几乎可以用和之前一样的方式来添加Tab,对于Tab来说,我们可以和MenuItem一样,给他定义自己的视图.我这里 ...
- 低版本系统兼容的ActionBar(七)自定义Actionbar标题栏字体
这个自定义字体其实和ActionBar有关,但之前写AtionBar的时候没考虑到修改字体样式,今天看到一篇专门写这个的文章就贴上使用方式.╮(╯▽╰)╭,不得不说Actionbar的那个样式真是让人 ...
- 低版本系统兼容的ActionBar(三)自定义Item视图+进度条的实现+下拉导航+透明ActionBar
一.自定义MenuItem的视图 custom_view.xml (就是一个单选按钮) <?xml version="1.0" encoding="u ...
- hyperscan在低版本系统应用问题
编译环境:centos6.3 32位/64位 由于hyperscan使用许多C++11特性,在低版本系统gcc版本不能编译.后来发现在runtime时也就是hs_scan时只需要依赖libhs_run ...
- Android 高版本API方法在低版本系统上的兼容性处理
Android 版本更替,新的版本带来新的特性,新的方法. 新的方法带来许多便利,但无法在低版本系统上运行,如果兼容性处理不恰当,APP在低版本系统上,运行时将会crash. 本文以一个具体的例子说明 ...
- 低版本Flume兼容高版本elasticsearch
Flume更新比较慢,而elasticsearch更新非常快所以当涉及更换elasticsearch版本时会出现不兼容问题. apache-flume-1.6.0+elasticsearch1.5.1 ...
随机推荐
- shell学习(三)
libvirt用于管理KVM本身的工具 virt-install用于安装虚拟机需要的安装包,安装虚拟机 virt-mananger:管理创建删除虚拟机的工具 ---恢复内容开始--- 1 gre ...
- Codeforces Round #355 (Div. 2) D. Vanya and Treasure
题目大意: 给你一个n × m 的图,有p种宝箱, 每个点上有一个种类为a[ i ][ j ]的宝箱,a[ i ][ j ] 的宝箱里有 a[ i ][ j ] + 1的钥匙,第一种宝箱是没有锁的, ...
- HDU4632 Poj2955 括号匹配 整数划分 P1880 [NOI1995]石子合并 区间DP总结
题意:给定一个字符串 输出回文子序列的个数 一个字符也算一个回文 很明显的区间dp 就是要往区间小的压缩! #include<bits/stdc++.h> using namesp ...
- 阿里云 rds python sdk不支持python3处理
阿里云文档中心的python版本aliyun-python-sdk-rds不支持python3处理 问题:默认情况下文档中心的python版本只支持python2,不兼容python3版本 需要稍微修 ...
- mysql创建索引笔记
1.添加PRIMARY KEY(主键索引.就是 唯一 且 不能为空.): ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.添加UNIQU ...
- 19. 删除链表的倒数第N个节点
19. 删除链表的倒数第N个节点 题意 删除链表的倒数第N个结点 解题思路 先让快结点移动n个位置,接着再让慢结点和快结点同时移动,发现出慢结点就是要删除的结点,将前结点指向删除结点的下一个结点即可: ...
- Gitlab使用QQ企业邮箱发送邮件
注册QQ企业邮箱 地址 https://exmail.qq.com/signupfree?refer=intro#signup/free 注册完成后解析 编辑/etc/gitlab/gitlab.rb ...
- [Java]如何把当前时间插入到数据库
[Java]如何把当前时间插入到数据库 1.在orderDao.java中 /** 设置订单*/ public void setOrder(Order order){ Date time = new ...
- Codeforces Round #281 (Div. 2) B. Vasya and Wrestling 水题
B. Vasya and Wrestling 题目连接: http://codeforces.com/contest/493/problem/B Description Vasya has becom ...
- Gym 100646 Problem E: Su-Su-Sudoku 水题
Problem E: Su-Su-Sudoku/center> 题目连接: http://codeforces.com/gym/100646/attachments Description By ...