Android学习笔记——Menu(二)

  • 知识点:

           这次将继续上一篇文章没有讲完的Menu的学习,上下文菜单(Context menu)和弹出菜单(Popup menu)。

  •    上下文菜单

              上下文菜单提供对UI界面上的特定项或上下文框架的操作,就如同Windows中右键菜单一样。

              在Android中,有两种提供上下文操作的方式:一种是在浮动的上下文菜单(长按弹出)中,另一种是上下文操作模式里。

             

              那么怎样创建一个浮动的上下文菜单(floating context menu)呢?

               1.调用registerForContextMenu()方法为View注册上下文菜单。

               2. 在Activity或Fragment中实现onCreateContextMenu()方法。

               3.实现onContextItemSelected()方法以响应用户长按菜单项的事件。

               下面是一个上下文菜单的demo:

              

 1     private TextView textView;
 2     final int RED = 0x101;
 3     final int BLUE = 0x102;
 4     final int GREEN = 0x103;
 5     @Override
 6     protected void onCreate(Bundle savedInstanceState) {
 7         super.onCreate(savedInstanceState);
 8         setContentView(R.layout.activity_main);
 9         
10         textView=(TextView)findViewById(R.id.textView);
11         //给textView注册上下文菜单
12         registerForContextMenu(textView);
13     }
14 //创建上下文菜单
15     @Override
16     public void onCreateContextMenu(ContextMenu menu, View v,
17             ContextMenuInfo menuInfo) {
18         menu.add(0, RED, 0, "Red");
19         menu.add(0, BLUE, 0, "Blue");
20         menu.add(0,GREEN,0,"Green");
21         menu.setHeaderTitle("Set the color of the textView");
22         menu.setGroupCheckable(0, true, true);
23     }
24     //菜单项响应事件
25     @Override
26     public boolean onContextItemSelected(MenuItem item) {
27           switch (item.getItemId()) {
28         case GREEN:
29             item.setChecked(true);
30             textView.setBackgroundColor(Color.GREEN);
31             break;
32         case BLUE:
33             item.setChecked(true);
34             textView.setBackgroundColor(Color.BLUE);
35             break;
36         case RED:
37             item.setChecked(true);
38             textView.setBackgroundColor(Color.RED);
39             break;
40         }
41          return true;
42     }

    

  • 使用上下文操作模式

         上下文操作模式是实现系统ActionMode接口,关注用户的交互来实现上下文操作行为。当用户通过选择菜单项来触发这个模式,一个可供用户对刚选择的菜单项进行操作的上下文action bar出现在屏幕顶部。用户可选择多项(select multi items)、取消选择(deselect)、操作完成(Done)、返回(BACK)等操作。

         那么什么时候调用上下文操作模式呢?

         在下面两种情况下调用:

          1.用户对View执行长按(long-click)操作。

          2.用户在View中选择了复选框(checkbox)或者类似的UI组件。

          怎么启用上下文操作模式呢?

          这也分两种情况:

           1.针对独立的View

              首先实现 ActionMode.Callback接口,然后调用startActionMode()方法。

           2.针对ListView或GirdView(或其他AbsListView的拓展)

             实现 AbsListView.MultiChoiceModeListener接口,调用setMultiChoiceModeListener()方法,最后传入CHOICE_MODE_MULTIPLE_MODAL参数调用setChoiceMode()方法。

        

 1     private ListView listView;
 2     @Override
 3     protected void onCreate(Bundle savedInstanceState) {
 4         super.onCreate(savedInstanceState);
 5         setContentView(R.layout.activity_main);
 6         
 7         listView=(ListView)findViewById(R.id.listview1);
 8         String arr[]={"New York","Shanghai","Los Angle","BeiJing","Paris","Tykyo","Moscow","Berlin","HongKong"};
 9         //将数组包装成ArrayAdapter
10         ArrayAdapter<String> adapter1= new ArrayAdapter<String>(this,R.layout.array_item ,arr);
11         listView.setAdapter(adapter1);
12         
13         listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
14         listView.setMultiChoiceModeListener(new MultiChoiceModeListener() {
15             
16             @Override
17             public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
18                 // TODO Auto-generated method stub
19                 return false;
20             }
21             
22             @Override
23             public void onDestroyActionMode(ActionMode mode) {
24                 // TODO Auto-generated method stub
25                 
26             }
27             
28             @Override
29             public boolean onCreateActionMode(ActionMode mode, Menu menu) {
30                 // TODO Auto-generated method stub
31                     MenuInflater inflater = mode.getMenuInflater();
32                     inflater.inflate(R.menu.contextmenu, menu);
33                     return true;
34             }
35             
36             @Override
37             public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
38                switch (item.getItemId()) {
39             case R.id.done:
40                 Toast.makeText(MainActivity.this, "You have clicked the DONE", Toast.LENGTH_LONG).show();
41                 break;
42             case R.id.cancel:
43                 Toast.makeText(MainActivity.this, "You have clicked the CANCEL", Toast.LENGTH_LONG).show();
44             default:
45                 break;
46             }    
47                 return true;
48             }
49             
50             @Override
51             public void onItemCheckedStateChanged(ActionMode mode, int position,
52                     long id, boolean checked) {
53                 // TODO Auto-generated method stub
54                 
55             }
56         });
57     }
View Code

          

转载于:https://www.cnblogs.com/JohnTsai/p/3971833.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/359580.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

eclipse卡慢解决办法

1.设置JVM运行内存 1.1编辑eclipse.ini 1.2 编辑eclipse.ini,设置jvm运行内存参数&#xff0c;最小内存&#xff1a;物理内存*0.2&#xff0c; 最大内存&#xff1a; 物理内存*0.6&#xff1b; 其中-vmargs为必须添加参数&#xff08;-vmargs的意思是设置JVM参数&#xff09;,…

python学习之文件读写

实现文件的读写 #! /usr/bin/python file_add open(test.txt,a)for i in range(1,5): file_add.write("1.1.1.%d 255.255.255.255 %d 2.2.2.%d 255.255.255.168 \n" %(i,i,i))file_add.close() 期间遇到的问题&#xff1a; 1、字符串格式化问题—多个参数 -sh-4.1#…

ext3 tree tbar 初始化定义

var rc_store new Ext.data.SimpleStore( { fields : [ value, text ], data : [ [ 10, 行 ], [ 20, 列 ] ] }); var bar_v [ { text:展开, handler:function(){ tree.expa…

xuggler 中文开发_Xuggler开发教程

xuggler 中文开发大家好&#xff0c; 在这篇文章中&#xff0c;我想介绍JavaCodeGeeks上的一些很酷的新教程。 他们将讨论与Xuggler &#xff0c; FFmpeg和Wowza进行媒体&#xff08;音频/视频&#xff09;操纵的方式。 我将在这篇文章中跟踪所有相关的教程。 您可以通过查看P…

QQ游戏百万人同时在线服务器架构实现

转载自&#xff1a;http://morton5555.blog.163.com/blog/static/976407162012013112545710/# QQ游戏于前几日终于突破了百万人同时在线的关口&#xff0c;向着更为远大的目标迈进&#xff0c;这让其它众多传统的棋牌休闲游戏平台黯然失色&#xff0c;相比之下&#xff0c;联众…

Ext grid js上移下移样例

function moveup(){//上移 var grid odin.ext.getCmp(gridid); var sms grid.getSelectionModel().getSelections(); var store grid.store; if (sms.length < 0) { alert(请选中需要上移的行!) return; } var selectdata sms[0]; …

Delphi IDE使用的一些主要技巧

Delphi IDE使用的一些主要技巧 1、查找和替换 &#xff08;1&#xff09;<ctrl>F[1]&#xff1a;选择页“Find”&#xff0c;进行查找&#xff0c;则根据查找方向继续查找。选择页“Find in Files”&#xff0c;则进行该工程内的全文查找。&#xff08;2&#xff09;<…

swing 选择对话框_Java Swing –日期选择器对话框

swing 选择对话框房子里有Swing开发人员吗&#xff1f; 对于使用Swing的用户来说&#xff0c;这是一个GUI组件&#xff0c;可能会对您的UI编码工作有所帮助。 我们的JCG合作伙伴之一提供了日期选择器小部件。 看看这个&#xff1a; Java Swing –日期选择器对话框以选择日期 …

域模型向左走(充血),向右走(贫血)

在文章的开始,我先举一个例子  美国M4谢尔曼坦克 VS德国的虎式坦克(相关资料如下http://mil.eastday.com/m/20070515/u1a2833237.html) 5&#xff1a;1 在五一期间&#xff0c;电视节目中的二战武器大对决吸引了我&#xff0c;其中当美国大兵说他们在用5辆坦克的代价来换德国…

hibernate session 新增、删除,修改、查询样例

1.实体查询 String sqla "from TEST where id? order by sortnum desc"; List list sess.createQuery(sql).setString(0, id).list(); Test test (Test)list.get(0); List list sess.createSQLQuery("select * from TEST where id ?").addEntity(TE…

linux-tar或zip解压缩命令

----------------------------------tar单个文件、文件夹压缩------------------------------------- tar -zcvf /temp/xxx.tar.gz /temp/xxx.txt --压缩 注释&#xff1a;将 /temp/xxx.txt 文件 压缩成 xxx.tar.gz tar -zxvf /temp/xxx.tar.gz -C /temp/ -解压 注释&#…

gwt-ext_GWT,GWT-Ext(SmartGWT),GXT(Ext GWT)常见任务

gwt-ext我正在浏览我们的JCG合作伙伴之一UI-Programming博客上的一些旧文章&#xff0c;并注意到有很多简短的文章&#xff0c;介绍了如何使用GWT&#xff0c;GWT-Ext&#xff08;SmartGWT&#xff09;和GXT&#xff08;Ext GWT&#xff09;执行一些常见任务。 &#xff09;。 …

linux服务器之间文件复制命令

scp -r root192.168.1.1:/temp/xx.txt /temp -- 将远程服务器文件拷贝到本地temp文件夹下(secure copy,是加密的),结果&#xff1a;/temp/xx.txt scp -r root192.168.1.1:/temp/ /temp -- 将远程服务器目录下所有文件拷贝到本地temp文件夹下,结果&#xff1a;/temp scp -r ro…

Leetcode: Median of Two Sorted Arrays

There are two sorted arrays A and B of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (mn)). 2017/2/5更新&#xff1a;如果一定要每次扔一半&#xff0c;使得时间复杂度为O(log(mn))。可以在第一…

Spring 3 RESTful Web服务

Spring 3提供了对RESTful Web服务的支持。 在本教程中&#xff0c;我们将向您展示如何在Spring中实现RESTful Web服务 &#xff0c;或者如何将现有的Spring服务公开为RESTful Web服务 。 为了使事情变得更有趣&#xff0c;我们将从上一篇关于Spring GWT Hibernate JPA Infinisp…

Whois查询接口文档

Whois查询接口文档 whois&#xff08;读作“Who is”&#xff0c;非缩写&#xff09;是用来查询域名的IP以及所有者等信息的传输协议。简单说&#xff0c;whois就是一个用来查询域名是否已经被注册&#xff0c;以及注册域名的详细信息的数据库&#xff08;如域名所有人、域名注…

DM达梦导入导出整个用户或某几张表

导出整个用户 dexp username/passwd127.0.0.1:5236 FILED:\dataexp.dmp LOGD:\dataexp_20191126.log 导出某几张表 dexp username/passwd127.0.0.1:5236 FILED:\dataexp.dmp tables(tbname1,tbname2) LOGD:\exp_20191126.log 导入 dimp username/passwd127.0.0.1:5236 FILED:…

DM达梦创建表空间用户

使用DBA用户登录创建 --查询表空间物理路径 select * from v$datafile; --创建表空间 CREATE TABLESPACE tablesplacename DATAFILE D:\dmdbms\data\DAMENG\tablesplacename .dbf SIZE 10240; --创建用户 CREATE USER username IDENTIFIED BY usernameusername DEFAULT T…

ruby和python_Ruby,Python和Java中的Web服务

ruby和python今天&#xff0c;我不得不准备一些示例来说明Web服务是可互操作的。 因此&#xff0c;我已经使用Metro使用Java创建了一个简单的Web服务&#xff0c;并在Tomcat上启动了它。 然后尝试使用Python和Ruby消耗它们。 这是全部完成的过程… Java中的Web服务 我从Java中…

USB描述符【整理】

USB描述符 USB描述符信息存储在USB设备中&#xff0c;在枚举过程中&#xff0c;USB主机会向USB设备发送GetDescriptor请求&#xff0c;USB设备在收到这个请求之后&#xff0c;会将USB描述符信息返回给USB主机&#xff0c;USB主机分析返回来的数据&#xff0c;判断出该设备是哪一…