选项菜单-上下文菜单
菜单
分类
选项菜单 OptionMenu
按menu键触发
事件源是Activity
上下文菜单 ContextMenu
长按组件时触发
子菜单 SubMenu
addSubMenu( )添加子菜单
用法
选项菜单
创建:重写onCreatOptionsMenu(Menu menu)
在代码里给menu添加MenuItem
纯java代码
menu.add( )
加载menu资源文件
1-获得Menu加载器
MenuInflater m=getMenuInflater( );
2-加载Menu资源文件
m.inflat(Menu资源文件的id,menu当前菜单)
以上两种加载方式可以并存
回调:重写boolean onOptionsItemSelected(MenuItem item)
上下文菜单
Activity 是OnCreateContextMenuListener的实现类
创建:组件.setOnCreateContextMenuListener(this)
在代码里添加MenuItem,方式同 选项菜单
响应:重写Activity的boolean onContextItemSelected(MenuItem item)
与LongClick监听器的关系
LongClick监听器的优先级高
boolean onLongClick(View v)的返回值决定后续的监听器能否被处理
package com.hanqi.testapp2;import android.app.Activity; import android.os.Bundle; import android.view.ContextMenu; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.SubMenu; import android.view.View; import android.widget.Button; import android.widget.Toast;public class TestActivity3 extends Activity {Button bt_1;Button bt_2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_test3);bt_1=(Button)findViewById(R.id.bt_1);bt_2=(Button)findViewById(R.id.bt_2);//给组件添加上下菜单 Activity是OnCreateContextMenuListener的实现类 bt_2.setOnCreateContextMenuListener(this);//添加长按监听器 // bt_2.setOnLongClickListener(new View.OnLongClickListener() { // @Override // public boolean onLongClick(View v) { // // Toast.makeText(TestActivity3.this, "按钮被长按了", Toast.LENGTH_SHORT).show(); // // return true;//后面不再处理 // } // });//点击bt_1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(TestActivity3.this, "按钮被点击了", Toast.LENGTH_SHORT).show();}});//长按bt_1.setOnLongClickListener(new View.OnLongClickListener() {@Overridepublic boolean onLongClick(View v) {Toast.makeText(TestActivity3.this, "按钮被长按了", Toast.LENGTH_SHORT).show();//事件是否已经被消费return true;}});}//重写创建上下文菜单的方法 @Overridepublic void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {super.onCreateContextMenu(menu, v, menuInfo);//javamenu.add(1,0,1,"字体大小");menu.add(1, 1, 2, "背景颜色");SubMenu sm=menu.addSubMenu(1, 2, 3, "子菜单");sm.add(2,21,0,"子菜单1");sm.add(2,22,1,"子菜单2");//加载文件MenuInflater m=getMenuInflater();m.inflate(R.menu.test3_menu,menu);}@Overridepublic boolean onContextItemSelected(MenuItem item) {Toast.makeText(TestActivity3.this, "上下文菜单的标题title="+item.getTitle(), Toast.LENGTH_SHORT).show();return super.onContextItemSelected(item);}//给activity 添加选项菜单//重写 @Overridepublic boolean onCreateOptionsMenu(Menu menu) {//添加菜单 // menu.add(1,1,0,"添加"); // menu.add(1,2,2,"修改"); // menu.add(1,3,1,"删除");//加载菜单文件方式//1-获得菜单加载器MenuInflater m=getMenuInflater();//2-加载菜单文件 1)菜单文件 2)当前菜单 m.inflate(R.menu.test3_menu,menu);return super.onCreateOptionsMenu(menu);}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {Toast.makeText(TestActivity3.this, "菜单项的id="+item.getItemId()+"菜单项的title"+item.getTitle(), Toast.LENGTH_SHORT).show();//怎么判断菜单文件里的菜单哪个被选中了if(item.getItemId()==R.id.me_1){Toast.makeText(TestActivity3.this, "执行删除动作", Toast.LENGTH_SHORT).show();}else if (item.getItemId()==R.id.me_2){Toast.makeText(TestActivity3.this, "执行修改动作", Toast.LENGTH_SHORT).show();}return super.onOptionsItemSelected(item);} }
选项菜单,上下文菜单
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="com.hanqi.testapp2.TestActivity3"android:orientation="vertical"><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="拨打电话"android:id="@+id/bt_1" /><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="上下文菜单按钮"android:id="@+id/bt_2" /></LinearLayout>
上下文菜单按钮
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"><item android:id="@+id/me_1" android:title="删除"/><item android:id="@+id/me_2" android:title="修改"/> </menu>
Menu
转载于:https://www.cnblogs.com/cycanfly/p/5475282.html
选项菜单-上下文菜单相关推荐
- Android菜单:选项菜单+上下文菜单+子菜单
菜单是人机交互的重要接口,在 Android SDK 中,提供了菜单类 android.view.Menu,以完成与菜单有关的操作. Android SDK 提供三种菜单,分别如下. 1)Option ...
- 选项菜单_上下文菜单_子菜单_图标菜单_自定义菜单_联系人标记弹出菜单
菜单控件<Menu > 选项菜单(Option Menu) 单击Menu实体按钮弹出,android中把它叫做option menu 上下文菜单(ContextMenu 是Menu的子接口 ...
- 【Android基础知识】选项菜单、上下文菜单、子菜单的使用
Android菜单类型 菜单是为了增加更多的功能,不占用屏幕的空间.Android中菜单类型有三类,选项菜单(OptionMenu).上下文菜单(ContextMenu).子菜单(SubMenu),下 ...
- 【电脑Windows日常】如何在 Windows 11 中自定义右键单击上下文菜单、自定义或者删除右键菜单的选项,包括桌面、文件夹和文件——详细教程(5个方法)
前言 虽然许多人喜欢Windows 11 的简化右键单击上下文菜单,但有些人对截断的菜单不太满意.让我们看看一些根据您的喜好对其进行自定义的方法. 而且,很多默认的应用会使得右键菜单非常臃肿,需要进一 ...
- 从Windows 10上下文菜单中删除SkyDrive Pro选项
如果你由于该选项已变灰,因此无法使用上下文菜单项.此外,并不是每个人都使用SkyDrive,或者在这种情况下,OneDrive存储他们的文档和东西.如果您不是SkyDrive(OneDrive)用户, ...
- Android Menu,OptionMenu选项菜单,ContextMenu上下文菜单,Contextual ActionMode,PopUp Menu,PopU pWi ndow
Android Menu 一.Opti onMenu选项菜单: (一).简介: 1.A ndroi d应用中的菜单默认是隐藏的,只有当用户点击手机上的ME NU 键,系统才会显示菜单.这种菜单叫做选项 ...
- Menu:选项菜单,上下文菜单,弹出式菜单
Menu的分类 1.选项菜单(OptionMenu) 选项菜单是一个应用的主菜单项,用于放置对应用产生全局影响的操作. 操作栏中 菜单的建立 //创建OptionMenu public boolean ...
- android之三大菜单(子菜单,选项菜单,上下文菜单)
今天班级同学聚餐,真的是喝的有点多,本来计划今天要完成这篇博客.有点喝多了,写的不好请见谅.想仔细了解的话,看官网说的,是中文的. https://developer.android.com/guid ...
- Android — 长按ListView 利用上下文菜单(ActionMode) 进行批量事件处理
好久没写博客拉``````` 近期最终略微闲一点了``````` 无聊拿手机清理短信.发现批量事件的处理还是挺管用的`````` 那么自己也来山寨一记看看效果吧````` 闲话少说,首先,我们来看下手 ...
- EditText 长按弹出的上下文菜单
当EditText获取焦点后,如果长按EditText就会弹出一个上下问菜单 如果剪贴板上没有内容的话,就不会有粘帖选项,否则就会有粘帖选项 ClipboardManager cm = (Clipbo ...
最新文章
- [原创]Gerrit中文乱码问题解决方案分享
- 【人脸检测】学界 | 中科院自动化研究所提出 FaceBoxes:实时、高准确率的 CPU 面部检测器
- (2016北京集训十二)【xsy1542】疯狂求导
- 二叉树的锯齿形层序遍历Python解法
- java 获取服务器硬件_dell服务器远程获取硬件状态
- MySQL备份与恢复-mysqldump备份与恢复
- java模式匹配_用Java匹配模式
- Linux基本常用命令
- windows安装多个maven_全网最容易理解的Maven安装、配置、集成演示
- ipmitool查看内存信息_小技巧:Win7系统中查看电脑内存频率多少的方法
- SCSA之信息安全概述
- ie工业工程,VIOOVI工时分析软件:教你一个测量工时的快捷方法
- 每日一记—获取Bing每日一图实现Android欢迎页(一)
- 基础篇:深入解析JAVA注解机制
- Centos设置开机自动启动
- 无法找到指定DLL库文件“v8.dIl“中的输出命令“Initializev8”
- 百度网盘 备份mysql数据库_利用百度云免费备份SQL数据库
- splite()方法的使用
- C,数组声明、初始化,不初始化会如何?
- MySql学习笔记——压测工具slap(二十九)