Android UI开发——AppCompat实现Action Bar
http://blog.csdn.net/xyz_lmn/article/details/12623609
每一位Android开发者对Action Bar这种设计都不陌生了,毕竟它已经发布了至少两年了。Android团队发布Action Bar设计规范时同时放出了ActionBar的Api来支持这种设计。如果对ActionBar不太熟悉的可以参考《
Android UI开发第二十四篇——Action Bar》。ActionBar的API被添加在Android3.0(API 级别 11)中,低版本的还是用不了,根本不能适配支持Android 2.X系列的应用。很幸运有第三方开源的actionbarsherlock支持使得Android 2.1以上的Android应用使用actionbarsherlock定义的Action Bar。这里我们不介绍actionbarsherlock怎么使用,我们介绍一种更新的官方支持的AppCompat 使得Android2.1以上的版本可以实现Action Bar。
Google I/O 2013中AppCompat实现的Action Bar效果
AppCompat在最新的API 18的Android Support Library中。使用AppCompat需要以库的形式引入到应用中,AppCompat在<sdk>/extras/android/support/v7/appcompat/
的位置,需要自行下载,或者升级SDK。
如果应用是使用actionbarsherlock实现的Action Bar,也不必刻意的改成AppCompat。因为actionbarsherlock是一个很稳定的经过很多开发者验证的开发库。
- ActionBarSherlock is a solid and well-tested library which has served developers very well for a long time.
- If you are already using it and do not currently require any of the above then there is no need to migrate.
1)导入AppCompat库
使用AppCompat第一步需要导入AppCompat库,这一步就不做详细介绍了。
2)修改 android:theme
每个使用Action Bar的Activity都应该添加Android:theme
- <activity
- ...
- android:theme="@style/Theme.AppCompat" />
或者修改application
- <application
- android:label="@string/app_name"
- android:icon="@drawable/ic_launcher"
- android:theme="@style/Theme.AppCompat"
- android:allowBackup="true">
3)Activity要继承自ActionBarActivity
实现Action Bar的视图需要继承ActionBarActivity。
4)修改menu的命名空间
- <menu xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:holo="http://schemas.android.com/apk/res-auto" >
- <item
- android:id="@+id/action_websearch"
- android:icon="@drawable/action_search"
- android:title="@string/action_websearch"
- holo:showAsAction="never"/>
- </menu>
要特别注意的是,通过XML文件来实现Action Item,一定要自定义命名空间,而且该命名空间的后缀一定要和item中showAsAction的前缀一致,本例中为“holo”
显示Menu需要重写onCreateOptionsMenu方法:
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.main, menu);
- return super.onCreateOptionsMenu(menu);
- }
对Menu的item事件处理需要重写onOptionsItemSelected方法。
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- // The action bar home/up action should open or close the drawer.
- // ActionBarDrawerToggle will take care of this.
- if (mDrawerToggle.onOptionsItemSelected(item)) {
- return true;
- }
- // Handle action buttons
- switch(item.getItemId()) {
- case R.id.action_websearch:
- // create intent to perform web search for this planet
- Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
- intent.putExtra(SearchManager.QUERY, getSupportActionBar().getTitle());
- // catch event that there's no activity to handle intent
- if (intent.resolveActivity(getPackageManager()) != null) {
- startActivity(intent);
- } else {
- Toast.makeText(this, R.string.app_not_available, Toast.LENGTH_LONG).show();
- }
- return true;
- default:
- return super.onOptionsItemSelected(item);
- }
- }
上面就是简单的通过Appcompat实现Action Bar,想自定义各种属性请参考官方文档。
demo下载:demo
参考:
http://antonioleiva.com/actionbarcompat-how-to-use/
http://antonioleiva.com/actionbarcompat-action-views/
http://android-developers.blogspot.com/2013/08/actionbarcompat-and-io-2013-app-source.html
Android UI开发——AppCompat实现Action Bar相关推荐
- Android UI开发第二十五篇——分享一篇自定义的 Action Bar
Action Bar是android3.0以后才引入的,主要是替代3.0以前的menu和tittle bar.在3.0之前是不能使用Action Bar功能的.这里引入了自定义的Action Bar, ...
- Android UI开发第三十九篇——Tab界面实现汇总及比较
Tab布局是iOS的经典布局,Android应用中也有大量应用,前面也写过Android中TAb的实现,<Android UI开发第十八篇--ActivityGroup实现tab功能>.这 ...
- Android 开发 -- 开发第一个安卓程序、Android UI开发(布局的创建:相对布局和线性布局、控件单位:px pt dp sp、常用控件 、常见对话框、ListView)
文章目录 1. 开发第一个Hello World程序 1.1 开发程序 1.2 认识程序中的文件 1.3 Android程序结构 1.4 安卓程序打包 2. Android UI开发 2.1 布局的创 ...
- Android UI开发第三十篇——使用Fragment构建灵活的桌面
http://www.lupaworld.com/article-222973-1.html 当我们设计应用程序时,希望能够尽最大限度的适配各种设备,包括4寸屏.7寸屏. 10寸屏等等,Android ...
- Android UI开发第四十一篇——墨迹天气3.0引导界面及动画实现
周末升级了墨迹天气,看着引导界面做的不错,模仿一下,可能与原作者的代码实现不一样,但是实现的效果还是差不多的.先分享一篇以前的文章,android动画的基础知识,<Android UI开发第十二 ...
- 【Android -- UI开发】一份 UI 开发学习指南
思维导图 推荐资料:官方文档 六大布局 网上有人比喻的很好:布局好比是建筑里的框架,组件按照布局的要求依次排列,就组成了用于看见的漂亮界面了. 请看文章:[Android – UI 开发]六大布局 U ...
- Android UI开发第三十二篇——Creating a Navigation Drawer
Navigation Drawer是从屏幕的左侧滑出,显示应用导航的视图.官方是这样定义的: The navigation drawer is a panel that displays the ap ...
- Android UI开发: 横向ListView(HorizontalListView)及一个简单相册的完整实现 (附源码下载)
本文内容: 1.横向ListView的所有实现思路; 2.其中一个最通用的思路HorizontalListView,并基于横向ListView开发一个简单的相册: 3.实现的横向ListView在点击 ...
- Android UI开发详解之ActionBar .
在Android3.0之后,Google对UI导航设计上进行了一系列的改革,其中有一个非常好用的新功能就是引入的ActionBar,他用于取代3.0之前的标题栏,并提供更为丰富的导航效果. 一.添加A ...
最新文章
- 《数学之美》第10章 PageRank--Google的民主表决网页排名技术
- C语言 数字翻转输出
- Java国家/地区使用限制条款引发争议
- Spark ML - 聚类算法
- asterisk 扩展应用(3)——IVR 实现
- java游戏运行环境_Java运行环境
- 微信sdk 隐藏右上角菜单项
- 项目经理如何确保工程质量
- Android中使用Intent进行窗体切换,并且传值和自定义类的对象详解
- JS的一些时间获取和计算公用方法封装
- inDesign教程,如何创建、修改和使用母版页?
- 30分钟学会用scikit-learn的基本回归方法(线性、决策树、SVM、KNN)和集成方法(随机森林,Adaboost和GBRT)
- 【水果识别】基于matlab GUI形态学水果识别(含识别率)【含Matlab源码 907期】
- 【TWVRP】基于matlab遗传算法求解带时间窗的车辆路径问题【含Matlab源码 002期】
- YS13-3荧光管时钟设计
- 控制/ 状态寄存器(RCC_CSR) 复位
- 为什么总是感觉压力很大?应该怎么办?
- 阴阳师手游如何用云手机无限多开换IP防封
- 太可怕啦!AI 一秒还原马赛克,有码变高清
- 借助CatGPT让turtlesim小乌龟画曲线
热门文章
- HDU 6085 Rikka with Candies (暴力压位)
- 【动态ppt制作软件】Focusky教程 | 设置预加载信息
- 计算机软件系统第一课时教案,第一章 信息与信息技术教案
- Win10自动更新怎么永久关闭?服务、注册表、组策略、计划任务中全方位设置,永久解决!
- win10下elk6.0安装运行(解决Servcie不是内部或外部命令的问题)
- 2016天天飞车服务器维护,天天飞车为什么关服?关服原因及补偿奖励一览
- Siemens Simatic PCS 7.5 version 9.1
- 随手记录JAVA微信扫码支付模式二功能
- “聪明车”接驳“智慧路”—— 智能网联车驶上新赛道
- 80端口封了怎么办,80端口被屏蔽解决方法