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. iOS9/iOS8界面对比 XCode7

    Xcde7 bate 无需开发这账号(99¥)可以调试程序 目前是测试版 iOS9/iOS8界面对比 (注:左边为iOS8界面,右边为iOS9界面.) 1.新字体 苹果在 iOS9 中使用旧金山字体取 ...

  2. C++及数据结构笔试面试常见知识点总结

    一些常考的基础知识点个人总结,大神勿喷,欢迎指正. 1.广义表的表尾是指除去表头后剩下的元素组成的表,表头可以为表或单元素值.表尾或为表,或为空表. 2.构造函数不能声明为虚函数. 构造函数为什么不能 ...

  3. [流媒体]live555简介(转)

    live555简介 Live555 是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP.RTSP.SIP等的支持.Live555实现 了对多种音视频编码 ...

  4. 标签工作区(navtab)

    B-JUI使用标签可以加载其他页面的数据 B-JUI框架的整个工作区部分就是一个navtab组件,本页面位于"#bjui-container"容器内,固定的html结构如下: &l ...

  5. iOS多线程之GCD学习笔记

    什么是GCD 1.全称是Grand Central Dispatch,可译为“牛逼的中枢调度器” 2.纯C语言,提供了非常多强大的函数 GCD的优势 GCD是苹果公司为多核的并行运算提出的解决方案 G ...

  6. Struts2标签<s:textfield/>

    中的name="",取值顺序是,如不加#,先从root中栈顶取,没有取到(即使栈顶有这个属性但是属性为空还是向下取,这点和el表达式不同)就去actioncontext的map中取 ...

  7. ASP.NET读取EXCEL文件的三种经典方法(转)

    1.方法一:采用OleDB读取EXCEL文件:  把EXCEL文件当做一个数据源来进行数据的读取操作,实例如下:public DataSet ExcelToDS(string Path) {  str ...

  8. poj3356 dp

    //Accepted 4100 KB 0 ms //类似poj1080 //dp[i][j]表示s1用前i个,s2用前j个的最少匹配步数 //dp[i][j]=min(dp[i][j-1]+1,dp[ ...

  9. 12-27cell 的可重用性(英雄列表应用性能的优化)

    在英雄列表中动态生成cell的代码在中, - (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(N ...

  10. 超级链接a+ confirm用法

    示例: <a href="DelServlet?action=${fuwa.id}" onClick="return confirm('你确定要删除?')" ...