自己定义Actionbar
自己定义Actionbar有两种方式:代码方式和xml方式
先说代码方式:
//getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.ad_action_bar_gradient_bak)); //getSupportActionBar().setDisplayHomeAsUpEnabled(false); 设置不显示左边的Indicator。相应style:android:homeAsUpIndicator //getSupportActionBar().setDisplayShowHomeEnabled(false); 设置不显示左边的HomeIcon //getSupportActionBar().setDisplayUseLogoEnabled(true);
在代码中使用getActionBar().setDisplayShowHomeEnabled(false)不显示ActionBar的图标,可是在进入程序瞬间还是会闪现这个图标,该怎么写才好?
这个问题应该是没法避免的。由于android系统在初始化actiivty时。必定以默认的style来初始。然后才会回调activity的onCreate等个函数。你在onCreate里等于是又一次设置actionbar的各个属性,必定有闪烁,所以我个人建议:不要在代码里设置actionbar的属性,体如今界面上。生效会延会有延时,出现闪现的现象,所以你看到这些演示样例代码都被我凝视掉了
那有没有其它的解决方式?有。就是我们接下来要说的xml方式:
先说一下theme的优先级,在AndroidManifest.xml中,假设application和activity同一时候指定了不同的android:theme="xxx",那么依据作用域的规则,activity的theme优先级就高于application,也就是说,假设遇到有冲突的style定义。那么以activity指定的style为准。
AndroidManifest.xml:
<application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".ui.ActivityMain" android:label="@string/app_name" android:theme="@style/StyledIndicators"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
注意,这里的StyledIndicators是actity的style(或者说them,两者差别不大)。这个style让ActivityMain全然无视appliccation的theme
styles.xml:
<style name="StyledIndicators" parent="@android:style/Theme.Holo.Light"> <item name="vpiCirclePageIndicatorStyle">@style/CustomCirclePageIndicator</item> <item name="vpiLinePageIndicatorStyle">@style/CustomLinePageIndicator</item> <item name="vpiTitlePageIndicatorStyle">@style/CustomTitlePageIndicator</item> <item name="vpiTabPageIndicatorStyle">@style/CustomTabPageIndicator</item> <item name="vpiUnderlinePageIndicatorStyle">@style/CustomUnderlinePageIndicator</item> <item name="android:actionBarStyle">@style/StyledIndicators.ActionBar</item> <item name="android:homeAsUpIndicator">@null</item> 自己定义的Actionbar里这个这个属性不起作用,移动这里才起作用 </style> <style name="StyledIndicators.ActionBar" parent="@android:style/Widget.Holo.Light.ActionBar"> <!-- Leivn add --> <!-- <item name="android:displayOptions">useLogo|showHome|showTitle</item> --> 注意这个属性。默认三个都显示:useLogo:坐标的小箭头。showHome:中间的图标。默认使用app的icon;showTitle:要不要显示标题,默认标题就是app的名称 <item name="android:displayOptions">showHome|showTitle</item> <item name="android:icon">@drawable/actionbar_home_drawable</item> <!-- android:homeAsUpIndicator 指定UpIndicator图标。就是最左边那个小箭头,在这里不起作用,移到上一层就能够,可能是google的bug。假设不想设置不论什么图标。那个这里的值设置为@null就可以,注意一定要有@符合,否则crash <item name="android:homeAsUpIndicator">@drawable/new_indicator</item> --> <item name="android:background">@drawable/ad_action_bar_gradient_bg</item> <item name="android:titleTextStyle">@style/MyActionBarTitleText</item> </style> <!--ActionBar title style--> <style name="MyActionBarTitleText" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title" > <!-- 更改Actionbar title字体颜色 --> <item name="android:textColor">@color/actionBarTitleTextcolor</item> </style>
xml代码里面加入了注解的地方,就是自己定义actionbar相关的代码
注意,非常多时候我们使用的是actionbarSherlock这个开源的acitonbar,没关系。一样能够自己定义actionbar的样式,方法同上,没有差别。
可能有些地方用的还是不标准,还请各位指正。
最后贴一张效果图:
參考文档:http://www.myexception.cn/mobile/1629183.html
相关文章
- 自己定义View学习之12/7(进度条之混合模式)
- 水滴状的自己定义视图,让您摆脱单调的Dialog
- android 自己定义dialog并实现失去焦点(背景透明)的功能
- Android之——自己定义TextView
- Android studio 自己定义打包APK名称
- JSP自己定义标签继承哪个类
- DICOM:再次剖析fo-dicom中DicomService的自己定义事件绑定
- 自己定义控件:onDraw 方法实现仿 iOS 的开关效果
- 他花了一个月,使用MicroPython将自己装进OLED里面
- 最高月薪15K,谁有历经千辛万苦的意志,谁就能收获属于自己的成功~
- 一觉醒来感觉自己回到了九八年, 让大数据来解释
- 做一个对自己有点要求的人
- 自己动手构造编译系统:编译、汇编与链接2.1.5 代码生成
- 使用Vitamio打造自己的Android万能播放器(5)——在线播放(播放优酷视频)
- 如何管理自己的测试团队
- 监听软件异常崩溃并且保持日志--CrashHandler编写自己的异常捕获类
- mac自己定义tree命令
- 累了吗?来挑战一下算法趣题,看看自己是哪个段位的程序猿吧!
- activiti自己定义流程之Spring整合activiti-modeler5.16实例(四):部署流程定义
- Android自己定义对话框实现QQ退出界面
- Objective-C学习笔记(二十二)——初始化方法init的重写与自己定义
- 大家注意好身体,得知道疼自己
- 怎样 TabHostFragment自己定义 tab键(indicator)
- Android - 小的特点 - 使用最新版本ShareSDK手册分享(分享自己定义的接口)
- Apacheserver自己定义404页面的两种方法以及.htaccess的重要命令总结
- 垃圾回收GC:.Net自己主动内存管理 上(三)终结器