菜单
分类
选项菜单 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

选项菜单-上下文菜单相关推荐

  1. Android菜单:选项菜单+上下文菜单+子菜单

    菜单是人机交互的重要接口,在 Android SDK 中,提供了菜单类 android.view.Menu,以完成与菜单有关的操作. Android SDK 提供三种菜单,分别如下. 1)Option ...

  2. 选项菜单_上下文菜单_子菜单_图标菜单_自定义菜单_联系人标记弹出菜单

    菜单控件<Menu > 选项菜单(Option Menu) 单击Menu实体按钮弹出,android中把它叫做option menu 上下文菜单(ContextMenu 是Menu的子接口 ...

  3. 【Android基础知识】选项菜单、上下文菜单、子菜单的使用

    Android菜单类型 菜单是为了增加更多的功能,不占用屏幕的空间.Android中菜单类型有三类,选项菜单(OptionMenu).上下文菜单(ContextMenu).子菜单(SubMenu),下 ...

  4. 【电脑Windows日常】如何在 Windows 11 中自定义右键单击上下文菜单、自定义或者删除右键菜单的选项,包括桌面、文件夹和文件——详细教程(5个方法)

    前言 虽然许多人喜欢Windows 11 的简化右键单击上下文菜单,但有些人对截断的菜单不太满意.让我们看看一些根据您的喜好对其进行自定义的方法. 而且,很多默认的应用会使得右键菜单非常臃肿,需要进一 ...

  5. 从Windows 10上下文菜单中删除SkyDrive Pro选项

    如果你由于该选项已变灰,因此无法使用上下文菜单项.此外,并不是每个人都使用SkyDrive,或者在这种情况下,OneDrive存储他们的文档和东西.如果您不是SkyDrive(OneDrive)用户, ...

  6. Android Menu,OptionMenu选项菜单,ContextMenu上下文菜单,Contextual ActionMode,PopUp Menu,PopU pWi ndow

    Android Menu 一.Opti onMenu选项菜单: (一).简介: 1.A ndroi d应用中的菜单默认是隐藏的,只有当用户点击手机上的ME NU 键,系统才会显示菜单.这种菜单叫做选项 ...

  7. Menu:选项菜单,上下文菜单,弹出式菜单

    Menu的分类 1.选项菜单(OptionMenu) 选项菜单是一个应用的主菜单项,用于放置对应用产生全局影响的操作. 操作栏中 菜单的建立 //创建OptionMenu public boolean ...

  8. android之三大菜单(子菜单,选项菜单,上下文菜单)

    今天班级同学聚餐,真的是喝的有点多,本来计划今天要完成这篇博客.有点喝多了,写的不好请见谅.想仔细了解的话,看官网说的,是中文的. https://developer.android.com/guid ...

  9. Android — 长按ListView 利用上下文菜单(ActionMode) 进行批量事件处理

    好久没写博客拉``````` 近期最终略微闲一点了``````` 无聊拿手机清理短信.发现批量事件的处理还是挺管用的`````` 那么自己也来山寨一记看看效果吧````` 闲话少说,首先,我们来看下手 ...

  10. EditText 长按弹出的上下文菜单

    当EditText获取焦点后,如果长按EditText就会弹出一个上下问菜单 如果剪贴板上没有内容的话,就不会有粘帖选项,否则就会有粘帖选项 ClipboardManager cm = (Clipbo ...

最新文章

  1. [原创]Gerrit中文乱码问题解决方案分享
  2. 【人脸检测】学界 | 中科院自动化研究所提出 FaceBoxes:实时、高准确率的 CPU 面部检测器
  3. (2016北京集训十二)【xsy1542】疯狂求导
  4. 二叉树的锯齿形层序遍历Python解法
  5. java 获取服务器硬件_dell服务器远程获取硬件状态
  6. MySQL备份与恢复-mysqldump备份与恢复
  7. java模式匹配_用Java匹配模式
  8. Linux基本常用命令
  9. windows安装多个maven_全网最容易理解的Maven安装、配置、集成演示
  10. ipmitool查看内存信息_小技巧:Win7系统中查看电脑内存频率多少的方法
  11. SCSA之信息安全概述
  12. ie工业工程,VIOOVI工时分析软件:教你一个测量工时的快捷方法
  13. 每日一记—获取Bing每日一图实现Android欢迎页(一)
  14. 基础篇:深入解析JAVA注解机制
  15. Centos设置开机自动启动
  16. 无法找到指定DLL库文件“v8.dIl“中的输出命令“Initializev8”
  17. 百度网盘 备份mysql数据库_利用百度云免费备份SQL数据库
  18. splite()方法的使用
  19. C,数组声明、初始化,不初始化会如何?
  20. MySql学习笔记——压测工具slap(二十九)

热门文章

  1. C/C++学习路线(总体把握C/C++)
  2. 无界面和应用图标的应用程序
  3. svnsync 服务器代码备份
  4. jquery效果插件网址
  5. C#导入Excel报错问题3。
  6. corosynclib+drbd+mysql组合应用
  7. 整理收藏 ASP中常见脚本精华代码
  8. 应用Rational工具简化基于J2EE项目(五)架构与设计
  9. java 内存快照怎么看_jvm工具篇-(1)-分析工具MAT使用(内存快照分析)
  10. flex 还有人用么_那些北京人用过的老物件,能认出10个说明您老了!