layout文件:

 <?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"> <Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="按钮"
android:id="@+id/bt_1"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="上下文菜单按钮"
android:id="@+id/bt_2"/>
</LinearLayout>

java类代码(bt_1代码可不看,bt_2代码为菜单属性相关):

 package com.hanqi.testapp2;

 import android.support.v7.app.AppCompatActivity;
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 AppCompatActivity { Button bt_1;
Button bt_2;
@Override
protected 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() {
@Override
public void onClick(View v) {
Toast.makeText(TestActivity3.this, "按钮被点击了", Toast.LENGTH_SHORT).show();
}
});
//长按
bt_1.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(TestActivity3.this, "按钮被长按了", Toast.LENGTH_SHORT).show();
//事件是否已被消费
return true;
}
}); } //重写创建上下文菜单方法
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
//java代码的方式
menu.add(1,0,0, "字体大小");
menu.add(1, 1, 1, "背景颜色"); //添加子菜单
SubMenu sm = menu.addSubMenu(1, 2, 3, "子菜单");
sm.add(2,21,0,"子菜单1");
sm.add(2,22,0,"子菜单2");
//加载文件的方式
MenuInflater m = getMenuInflater();
m.inflate(R.menu.test3_menu, menu);
} @Override
public boolean onContextItemSelected(MenuItem item) {
Toast.makeText(TestActivity3.this, "上下文菜单的title = "+item.getTitle(), Toast.LENGTH_SHORT).show();
return super.onContextItemSelected(item);
} //给activity天津选项菜单
//重写
@Override
public 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);
} @Override
public 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);
}
}

效果图为:

附相关思维导图:

Android—菜单的更多相关文章

  1. Android菜单详解(四)——使用上下文菜单ContextMenu

    之前在<Android菜单详解(二)——创建并响应选项菜单>和<Android菜单详解(三)——SubMenu和IconMenu>中详细讲解了选项菜单,子菜单和图标菜单.今天接 ...

  2. Android菜单详解(一)——理解android中的Menu

    前言 今天看了pro android 3中menu这一章,对Android的整个menu体系有了进一步的了解,故整理下笔记与大家分享. PS:强烈推荐<Pro Android 3>,是我至 ...

  3. 【转】Android菜单详解——理解android中的Menu--不错

    原文网址:http://www.cnblogs.com/qingblog/archive/2012/06/08/2541709.html 前言 今天看了pro android 3中menu这一章,对A ...

  4. Android菜单(动画菜单、360波纹菜单)

     Android菜单(动画菜单.360波纹菜单) 前言:Android菜单常用集合:FragmentTabHost系统菜单.上移式菜单.360波纹菜单.展开式菜单.详解注释,可直接拿来用! 效果:   ...

  5. Android菜单

    Android菜单概述 菜单是Activity的一个重要组成部分,它为用户操作提供了快捷的途径.Android提供了一个简单的框架来向程序中添加标准菜单 . 一.创建一个菜单资源 你需要在一个XML ...

  6. Android菜单(menu)

    Android  菜单 我们继续来进行学习,今天写一下在软件中用的还算较多的菜单. 1.Menu 菜单,很显然,作用就是点击不同的选项触发不同的方法.现在在安卓使用中推荐使用ActionBar,但这里 ...

  7. Android菜单项内容大全

    一.介绍: 菜单是许多应用中常见的用户界面组件. Android3.0版本以前,Android设备会提供一个专用"菜单"按钮呈现常用的一些用户操作, Android3.0版本以后, ...

  8. Android菜单Menu的创建

    在res目录下的menu文件夹下创建一个main.xml文件,内容如下: <?xml version="1.0" encoding="utf-8"?> ...

  9. Android 菜单(OptionMenu)

    菜单是用户界面中最常见的元素之一,使用非常频繁,在Android中,菜单被分为如下三种,选项菜单(OptionsMenu).上下文菜单(ContextMenu)和子菜单(SubMenu). 一.概述 ...

随机推荐

  1. MonoRail MVC应用(2)-构建多层结构的应用程序

    习惯了分层结构的.NET开发了,当然也是分层有优势,所以在使用MonoRail进行网站构建时,首先考虑到的问题就是MonoRail如何应对分层的结构.问题1:MonoRail在WEB层没有根目录,必须 ...

  2. jquery animate()方法使用的注意事项

    当使用 animate() 时,必须使用 Camel 标记法书写所有的属性名,比如,必须使用 paddingLeft 而不是 padding-left,使用 marginRight 而不是 margi ...

  3. [windows驱动]windows8.1驱动调试前戏

    人们都说在干正事之前,得先做足前戏才会爽,我一直很认同这个观点,下面我来总结下进行windows8.1的WDK调试所要做的准备工作. 软件安装: 1.VS2013. 2.WDK8.1 3.Window ...

  4. 10 件在 PHP 7 中不要做的事情

    1. 不要使用mysql_函数 这一天终于来了,从此你不仅仅"不应该"使用mysql_函数.PHP 7 已经把它们从核心中全部移除了,也就是说你需要迁移到好得多的mysqli_函数 ...

  5. ODI 11g & 12c中缓慢变化维(SCD)的处理机制

    缓慢变化维(Slowly changing Dimensions)指的是维表中的维度字段值会随着时间或业务调整,而在后续的分析中,历史数据仍然要使用旧的维度值,新的数据会使用当前维度值.在数据仓库建设 ...

  6. Mysql5.0以上 手工注入

    Mysql5.0以上 order by 23 http://www..com/productdet.php?&id=89 and 1=2 UNION SELECT 1,2,3,4,5,6,7, ...

  7. linux下解决端口被占用的问题

    以端口9877为例,先查看是否有进程占用该端口 netstat -tln | grep 9877 然后查看占用该端口的进程的进程id lsof -i :9877 最后kill 命令结束该进程: kil ...

  8. OnePlus安装Kali-NetHunter

    1.关于 Kali NetHunter Kali NetHunter 是一款由 Offensive Security 团队研发设计的,以 Nexus(手机/平板)为基本 硬件设备,基于原生 Andro ...

  9. IOS第三方库 MARK

    综合github上各个项目的关注度与具体使用情况,涵盖功能,UI,数据库,自动化测试,编程工具等类型,看完,还敢自称”精通iOS开发”吗? https://github.com/syedhali/EZ ...

  10. Postfix之mail.cf

    1.# 2. 3.vi /etc/postfix/main.cf #vi编辑postfix配置文件 4.#找到如下配置项酌情修改 5.###### 6.myhostname =  mail.yourd ...