Android Contextual ActionBar (CAB)上下文操作栏使用指南
来源:互联网 发布:软件的稳定性 编辑:程序博客网 时间:2024/05/16 18:32
先直观的看看什么是上下文操作栏
这是来自android developer的原图,左边是Float menu,也就是原来的Context Menu,后边的就是我们要说的Contextual ActionBar,原文中叫Contextual Action Mode,由于操作按钮都是出现在ActionBar的位置,所以直接叫Contextual ActionBar好了。
Context Menu和Contextual ActionBar(以下简称CAB)与activity的菜单OptionMenu相比,不同就在于前两个是针对View的,可以为每个View添加相应的Context Menu和CAB,但是OptionMenu是针对整个Activity的。
前几天遇到一个面试的人,随口聊起来ActionBar,没想到那个人说自己从来不用ActionBar,从来都是自己实现一个Layout放在顶部,然后聊了ActionBar的其他一些特性,果然既不懂又不服。感觉很多人对ActionBar还是有一些误解,认为就是一个顶部的导航栏,其实ActionBar还有很多不错的用途,CAB就是其中一个。
本文主要是结合android developer文档写的,喜欢读英文的可以直接进入传送门Menus。
CAB是为了处理用户一连串动作,比如一个用户可能看到一段文字,觉得很好,就会想给分享给别人或者保存下来,当用户选中文字后,就可以出现CAB,CAB上包含分享按钮、复制按钮,让用户进行分享或者保存动作。
一般Contextual ActionBar都是监听View的LongClick事件,也就是长按组件出现CAB。
对于普通的View,比如Button、TextView等,一般实现可以简化为三步。
1、xml中实现menu
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/menu_share" android:title="@string/share" android:icon="?attr/menuIconShare" android:showAsAction="always|withText" /></menu>
2、实现ActionMode.Callback接口
class ActionBarCallBack implements ActionMode.Callback{@Overridepublic boolean onActionItemClicked(ActionMode arg0, MenuItem arg1) {// TODO Auto-generated method stub//这里是对Contextual item的处理return false;}@Overridepublic boolean onCreateActionMode(ActionMode arg0, Menu arg1) {// TODO Auto-generated method stub//这里是关键arg0.getMenuInflater().inflate(R.menu.main_context_menu, arg1);return true;}@Overridepublic void onDestroyActionMode(ActionMode arg0) {// TODO Auto-generated method stub}@Overridepublic boolean onPrepareActionMode(ActionMode arg0, Menu arg1) {// TODO Auto-generated method stubreturn false;}}
3、为相应的view添加LongClick事件监听。
tv = (TextView) rootView.findViewById(R.id.fragment_main_tv);tv.setOnLongClickListener(new View.OnLongClickListener() {@Overridepublic boolean onLongClick(View v) {// TODO Auto-generated method stubmContext.startSupportActionMode(mContext.new ActionBarCallBack());return false;}});在onLongClick中调用startSupportActionMode(为了兼容,或者startActionMode),把第2步的Action.Call对象作为参数。
这样,长按view就会出现Contextual ActionBar,
- Android Contextual ActionBar (CAB)上下文操作栏使用指南
- ActionBar(8)上下文操作栏(ContextActionBar)
- 在GRIDVIEW中使用CONTEXTUAL ACTIONBAR批量操作数据
- Android系统五种常用的 Menu!OptionMenu/ContextMenu/Actionbar/Contextual aciton mode/popup menu
- Android Menu,OptionMenu选项菜单,ContextMenu上下文菜单,Contextual ActionMode,PopUp Menu,PopU pWi ndow
- Android ActionBar拆分操作栏模式
- Creating Contextual Menus创建上下文菜单
- hibernate 上下文相关的(Contextual)Session
- Phalcon 上下文编码(Contextual Escaping)
- Android 上下文菜单与上下文操作模式
- Android上下文菜单和上下文操作
- Android 创建项目ActionBar(操作栏)不显示的问题
- Android contextual action mode 学习
- Android contextual action mode 学习
- Android Batch Contextual Actions使用方法
- Android Contextual Menus之二:contextual action mode
- hibernate 上下文相关的会话(Contextual Session)
- Android ActionBar动作栏
- Android AsyncTask完全解析,带你从源码的角度彻底理解
- ArcGIS教程:ArcGIS栅格数据的合并和剪切
- Jsp的工作原理
- 动画学习笔记(一):创建Drawable动画
- netty中的session属性设置和链接事件捕获
- Android Contextual ActionBar (CAB)上下文操作栏使用指南
- 魏建华
- 网络连接故障处理六部曲
- 童装检测
- 文件隐藏的几种简单方法
- 基于Linux内核的应用程序构造(一)——内核配置
- 资源文件详解(一)生成资源类文件(R.java)
- 问题解决——Win7 64 安装 AutoCAD 2010 32位 和 清华天河PC CAD
- MySql 存储过程 IF ElSE 小实例