(转)Android新的menu实现——ActionMode
Android的menu有多种实现方式,以前写过一篇Android中五种常用的menu(菜单),这里介绍一种新的menu实现方式:ActionMode。ActionMode是Android 3.0以后出现的,我们可以使用AppCompat库使ActionMode兼容至Android 2.1。
Android 3.0以前,我们处理列表的长按事件经常使用Context Menu,Android3.0以后,我们有了新的选择:ActionMode。下图左边效果为Context Menu右边效果为ActionMode。
Android开发者应该都熟悉Context Menu了,Context Menu是悬浮在操作项之上的视图。ActionMode是临时占据了ActionBar的位置。下面给出ActionMode的实现方法。
使用ActionMode需要两步骤:
1、实现ActionMode.Callback接口,并处理ActionMode的生命周期,ActionMode的生命周期如下图:
- private ActionMode.Callback mCallback = new ActionMode.Callback() {
- @Override
- public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
- return false;
- }
- @Override
- public void onDestroyActionMode(ActionMode mode) {
- // TODO Auto-generated method stub
- }
- @Override
- public boolean onCreateActionMode(ActionMode mode, Menu menu) {
- MenuInflater inflater = mode.getMenuInflater();
- inflater.inflate(R.menu.actionmode, menu);
- return true;
- }
- @Override
- public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
- boolean ret = false;
- if (item.getItemId() == R.id.actionmode_cancel) {
- mode.finish();
- ret = true;
- }
- return ret;
- }
- };
2、事件触发时,调用startActionMode()方法。
- someView.setOnLongClickListener(new View.OnLongClickListener() {
- // Called when the user long-clicks on someView
- public boolean onLongClick(View view) {
- if (mActionMode != null) {
- return false;
- }
- // Start the CAB using the ActionMode.Callback defined above
- mActionMode = getActivity().startActionMode(mActionModeCallback);
- view.setSelected(true);
- return true;
- }
- });
参考:
http://developer.android.com/reference/android/view/ActionMode.Callback.html
http://developer.android.com/guide/topics/ui/menus.html
(转)Android新的menu实现——ActionMode的更多相关文章
- Android新的menu实现——ActionMode
Android的menu有多种实现方式,以前写过一篇Android中五种常用的menu(菜单),这里介绍一种新的menu实现方式:ActionMode.ActionMode是Android 3.0以后 ...
- 低版本系统兼容的ActionBar(一)设置颜色+添加Menu+添加ActionMode
之前我一直用ActionBarSherlock这个开源项目来做ActionBar,因为它可以让低版本的设备也能用上ActionBar.但是在最新的SDK中Google提供了一个AppCompa ...
- Android进阶之光-第1章-Android新特性-读书笔记
第 1 章 Android 新特性 1.1 Android 5.0 新特性 1.1.1 Android 5.0 主要新特性 1. 全新的 Material Design 新风格 Material De ...
- Android Studio —— 创建Menu菜单项
大多数android程序的右上角都会设置一个菜单按钮比如微信的界面右上角的加号. 这个需要在layout同级目录下新建文件夹命名为menu,再右击新建的menu新建xml文件:
- fir.im Weekly - 从零开始创建 Android 新项目
今年的 Google I/O 大会上,人工智能和虚拟现实的产品发布让我们对未来多了几分惊喜.对于开发者部分,Google 发布了 Android N 系统,感受最深的是全新的 Android Stud ...
- Android新旧版本Notification
Android新旧版本Notification 在notification.setLatestEventInfo() 过时了 以前: NotificationManager mn = (Notific ...
- Android ActionBar以及menu的代码设置样式
menu部分xml代码 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android= ...
- 向Dialog中添加一个新的Menu
1.创建一个新的Menu,在资源管理视图中,右键Menu-->传入Menu 2.设计新Menu,ID为IDR_MENU1 3.在该Dialog的源文件中,找到CTest001Dlg::OnIni ...
- Android菜单详解(一)——理解android中的Menu
前言 今天看了pro android 3中menu这一章,对Android的整个menu体系有了进一步的了解,故整理下笔记与大家分享. PS:强烈推荐<Pro Android 3>,是我至 ...
随机推荐
- 红蓝对抗 - 蓝队手册(BTFM)(转载)
本文已发表在嘶吼RoarTalk,未经授权,请勿转载! http://www.4hou.com/technology/10173.html 最佳阅读体验版:https://stackedit.io/v ...
- 使用octave符号运算求解不定积分、微分方程等(兼容matlab)
1.求解1/(1+cos(x))^2的不定积分. 在和学生讨论一道物理竞赛题的时候,出现了这个函数的积分求解需求.查积分表也可写出答案.但是可以使用octave的符号运算工具箱来做. syms x; ...
- requests库安装
1.运行cmd输入pip install requests C:\Users\Administrator\AppData\Local\Programs\Python\Python37\Scripts ...
- yalinqo 的使用...
from($this->getInfo())->where('$v["is_enable"]==1')->where(function (&$v) use ...
- C++_类和动态内存分配6-复习各种技术及队列模拟
知识点: 队列:是一种抽象的数据类型(Abstract Data Type),可以存储有序的项目序列. 新项目被添加在队尾,并可以删除队首的项目.队列有些像栈.栈是在同一端进行添加和删除.这使得栈是一 ...
- codeforces833B The Bakery
题面传送门 题目大意:将一个长度为n的序列分为k段,使得总价值最大,一段区间的价值表示为区间内不同数字的个数 思路: 显然的dp. 先想到一个朴素的状态转移方程 $dp[i][k]=max(dp[j] ...
- Oracle9i之xmltype应用(1)
oracle从9i开始支持一种新的数据类型-- xmltype,用于存储和管理xml数据,并提供了很多的functions,用来直接读取xml文档和管理节点.下面将介绍xmltype的一些基本使用. ...
- PIE SDK点元素的绘制
1. 功能简介 在数据的处理中会用到点元素的绘制,目前PIE SDK支持IMarkerSymbol的点元素的绘制,MarkerSymbol对象是用于修饰点状对象的符号,它包括ArrowMarkerSy ...
- TOJ 4289 Unrequited Love
Description There are n single boys and m single girls. Each of them may love none, one or several o ...
- 委托delegate 泛型委托action<> 返回值泛型委托Func<> 匿名方法 lambda表达式 的理解
1.使用简单委托 namespace 简单委托 { class Program { //委托方法签名 delegate void MyBookDel(int a); //定义委托 static MyB ...