`
xiehongdong
  • 浏览: 68853 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

菜单Menu

阅读更多

 本实例主要介绍了android中的一些菜单,Android系统里面有3种类型的菜单:options menu,context menu,sub menu。

在本例中介绍了options menu,context menu。

例子中使用的图片采用了android中自带的一些图片

 

    menu.xml

<menu
  xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:title="File"
    	android:icon="@drawable/icon">
    	<menu>
    		<group android:id="@+id/group1"
    			android:checkableBehavior="none">
    		
    			<item android:id="@+id/newFile"
    				android:alphabeticShortcut="n"></item>
    			<item android:id="@+id/openFile"
    				android:alphabeticShortcut="o"></item>
    			<item android:id="@+id/saveFile"
    				android:alphabeticShortcut="s"></item>
    		</group>
    	</menu>
    </item>
    <item android:title="Edit"
    	android:icon="@drawable/icon">
    	<menu>
    		<group android:id="@+id/group2"
    			android:checkableBehavior="single">
    			<item android:id="@+id/cut"
    				android:title="Cut"></item>
    			<item android:id="@+id/copy"
    				android:title="Copy"></item>
    			<item android:id="@+id/past"
    				android:title="Past"></item>
    		</group>
    	</menu>
    </item>
    <item android:title="Help"
    	android:icon="@drawable/icon">
    	<menu>
    		<group android:id="@+id/group3"
    			android:checkableBehavior="all">
    		
    			<item android:id="@+id/about"
    				android:title="About"></item>
    			<item android:id="@+id/exit"
    				android:title="Exit"></item>
    		</group>
    	</menu>
    </item>
</menu>

 

   TestMenuAcvity .java

public class TestMenuAcvity extends Activity{
	public static final int ITEM1 = Menu.FIRST;
	public static final int ITEM2 = Menu.FIRST + 1;
	public static final int ITEM3 = Menu.FIRST + 2;
	
	private TextView textView;
	
	private MenuInflater menu;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.testmenu);
		
		menu = new MenuInflater(this);
		
		textView = (TextView) findViewById(R.id.mymenu);
		registerForContextMenu(textView);
	}
	
	
	@Override
	public void onCreateContextMenu(ContextMenu menu, View v,
			ContextMenuInfo menuInfo) {
		menu.add(0, ITEM1, 0, "红色背景");
		menu.add(0, ITEM2, 0, "绿色背景");
		menu.add(0, ITEM3, 0, "白色背景");
	}

	

	@Override
	public boolean onContextItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case ITEM1:
			textView.setBackgroundColor(Color.RED);
			break;
		case ITEM2:
			textView.setBackgroundColor(Color.GREEN);
			break;
		case ITEM3:
			textView.setBackgroundColor(Color.WHITE);
			break;

		default:
			break;
		}
		return true;
	}


	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenu().inflate(R.menu.menu, menu);
		SubMenu file = menu.addSubMenu("文件");
		SubMenu edit = menu.addSubMenu("编辑");
		
		file.add(0, ITEM1, 0, "新建");
		file.add(0, ITEM2, 0, "修改");
		file.add(0, ITEM3, 0, "删除");
		
		return true;
	}
	
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case R.id.about:
			aboutAlert("本实例是研究如何使用XML菜单资源来定义菜单!");
			break;
		case R.id.exit:
			exitAlert("您确定要退出吗?");
			break;
		case ITEM1:
			setTitle("新建文件");
			break;
		case ITEM2:
			setTitle("修改文件");
			break;
		case ITEM3:
			setTitle("删除文件");
			Toast toast = Toast.makeText(getApplicationContext(), "提示信息:\n文件删除成功!", 2);
			toast.show();
			break;
		default:
			break;
		}
		return true;
	}
	
	private void exitAlert(String msg){
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		builder.setMessage(msg).setCancelable(false).setPositiveButton("确定", new DialogInterface.OnClickListener(){

			@Override
			public void onClick(DialogInterface dialog, int which) {
				//结束Activity
				finish();
			}
			
		}).setNegativeButton("取消", new DialogInterface.OnClickListener(){
			@Override
			public void onClick(DialogInterface dialog, int which) {
				return;
			}
			
		});
		AlertDialog dialog = builder.create();
		dialog.show();
	}
	
	private void aboutAlert(String msg){
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		builder.setMessage(msg).setCancelable(false).setPositiveButton("确定", new DialogInterface.OnClickListener(){

			@Override
			public void onClick(DialogInterface dialog, int which) {
				
				
			}
			
		});
		AlertDialog dialog = builder.create();
		dialog.show();
	}
	
	public MenuInflater getMenu() {
		return menu;
	}
	public void setMenu(MenuInflater menu) {
		this.menu = menu;
	}
	
}

 运行结果截图:


 

options menu:



 
 context menu:长按“测试菜单资源”即可显示下图,选择对应的选项“测试菜单资源”的背景色就会变成对应的颜色



 

 

  • 大小: 16 KB
  • 大小: 15.4 KB
  • 大小: 14.4 KB
分享到:
评论

相关推荐

    PB动态生成菜单MENU OBJECT

    根据提供的标题“PB动态生成菜单 MENU OBJECT”以及描述“PB动态生成菜单MENU OBJECT,这看似简单的一句话其实包含了三层含义”,我们可以将该主题细分为三个主要的技术点进行详细阐述: #### 1. 理解 PowerBuilder...

    Android初级入门——菜单Menu的简单使用

    在本文中,我们将深入探讨Android初级入门时如何简单地使用菜单Menu。 首先,菜单在Android中的主要用途是为用户提供应用程序的主要操作选项,这些选项通常在屏幕的顶部或者在动作栏(Action Bar)中显示。菜单可以...

    菜单menu.zip

    本资源“菜单menu.zip”包含了一个关于菜单简单应用的示例,涉及多选、单选以及子菜单的使用,这对于理解Android Studio中如何创建和管理菜单非常有帮助。 在Android中,菜单主要用于在特定的屏幕上下文中显示一组...

    仿优酷菜单 menu

    仿优酷菜单 menu 优酷 菜单 menu

    菜单折叠\修正兼容简洁版后台菜单menu3

    本项目名为“菜单折叠\修正兼容简洁版后台菜单menu3”,旨在提供一个优化过的、简洁且易于修改的后台菜单解决方案。让我们深入探讨这个项目所涉及的知识点。 首先,"菜单折叠"是指在用户界面设计中,菜单项可以根据...

    pb 彩色菜单 menu powerbuild9

    pb 彩色菜单 menu powerbuild9 运行效果图 http://hi.csdn.net/attachment/201102/17/0_1297901373A8zH.gif

    菜单menu.lstU盘启动专用

    用来制作u 盘启动的,主要用于grub平台下的启动菜单,启动包含了背景文件

    ASP.NET 自定义菜单MENU控件

    `NavMenu`可能是这个自定义菜单控件的主要实现类或者命名空间,而`NavMenu.Test`则可能包含测试代码,用于验证控件的正确性和性能。通过测试代码,开发者可以了解如何使用这个控件,以及它能实现的各种功能。例如,...

    asp.net 菜单 menu

    menu ul li a, .menu ul li a:visited {display:block; text-decoration:none; color:#000;width:150px; height:30px; text-align:center; color:#fff; border-bottom:1px solid #FFF; background:#0069A3; line-...

    横导航菜单menu的实例 js代码

    在网页设计中,横导航菜单(Horizontal Navigation Menu)是一种常见的用户界面元素,它通常位于页面顶部,用于引导用户浏览网站的不同部分。这种菜单设计既美观又实用,因为它们有效地利用了横向空间,使得用户能够...

    Android 创建菜单Menu

    Android Studio提供了图形化界面(Menu Designer)来创建和编辑菜单,使得开发者可以更直观地设计菜单布局。此外,`MenuItemCompat`类提供了对早期版本API的兼容性支持。 总结,创建和使用Android菜单是提升用户...

    极简宽屏杂志风格响应式网站模板_宽屏 杂志 时尚 模特 响应式 企业 bootstrap 手机 菜单 menu wap菜单 大气

    极简宽屏杂志风格响应式网站模板_宽屏 杂志 时尚 模特 响应式 企业 bootstrap 手机 菜单 menu wap菜单 大气极简宽屏杂志风格响应式网站模板_宽屏 杂志 时尚 模特 响应式 企业 bootstrap 手机 菜单 menu wap菜单 大气

    jquery 导航菜单 menu

    本篇文章将深入探讨如何使用 jQuery 实现一个高效且美观的导航菜单,以"superfish-menu"为例。 首先,我们需要理解 jQuery 的基本概念。jQuery 是一个轻量级的库,它简化了 JavaScript 的许多操作,如选择元素、...

    菜单menu的基本使用

    在Android开发中,菜单(Menu)是用户界面的重要组成部分,它为用户提供了一种访问应用程序功能的便捷方式。在本文中,我们将深入探讨Android菜单的基本使用,这对于初学者来说是一份非常实用的指南。 首先,让我们...

    网站上线临时页面page模板_菜单 menu 上线 倒计时.zip源码资源下载

    网站上线临时页面page模板_菜单 menu 上线 倒计时.zip源码资源下载网站上线临时页面page模板_菜单 menu 上线 倒计时.zip源码资源下载 1.学生做毕业设计用 2.程序员学习研究用 3.小公司换皮做新项目用

    Android菜单menu代码

    `getMenuInflater().inflate()`方法用于将XML定义的菜单加载到内存中,`R.menu.main_menu`是对应的菜单资源ID。 当用户点击菜单项时,系统会调用`onOptionsItemSelected(MenuItem item)`方法。在这个方法里,你可以...

    MFC自绘带icon或progress bar的菜单Menu

    MFC自绘带icon或progress bar的菜单Menu 重载DrawItem、MeasureItem函数,可以设置不同的属性:SetExtensionColor、SetLargeIcon、SetMenuBitmap等。

    绿色摩托车产品展示页面html5模板_绿色 摩托 摩托车 机车 导航 菜单 menu 侧栏 wap 手机 产品 展示 宽屏 w3

    绿色摩托车产品展示页面html5模板_绿色 摩托 摩托车 机车 导航 菜单 menu 侧栏 wap 手机 产品 展示 宽屏 w3绿色摩托车产品展示页面html5模板_绿色 摩托 摩托车 机车 导航 菜单 menu 侧栏 wap 手机 产品 展示 宽屏 w3

    ASP.NET 菜单MENU控件数据库

    ASP.NET中的菜单控件(Menu Control)是一种强大的工具,用于在网页上构建层次结构清晰的导航菜单。这个控件能够动态地从数据源,如数据库,加载和显示菜单项,使得网站的导航更加灵活和可扩展。在本项目中,我们将...

    android 使用菜单menu资源

    在Android应用开发中,`Menu`资源是一种非常重要的组件,它允许用户在应用程序的不同界面(如选项栏或上下文菜单)中访问各种操作。本文将深入讲解如何在Android项目中创建、使用和管理`Menu`资源,以实现一个易于...

Global site tag (gtag.js) - Google Analytics