`

Android之菜单大锅烩(19)

阅读更多
  • 选项菜单:OptionsMenu

选项菜单是我们最常用的,我们打开Activity会发现一个目前我们用不到的的自动生成代码:

public boolean onCreateOptionsMenu(Menu menu) 

 

这就是创建菜单的方法,现在我们来实现一个简单的选项菜单:

在Activity加入以下代码:

public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		menu.add(Menu.NONE,Menu.FIRST+1,5,"删除").setIcon(android.R.drawable.ic_menu_delete);
		menu.add(Menu.NONE,Menu.FIRST+2,2,"保存").setIcon(android.R.drawable.ic_menu_save);
		menu.add(Menu.NONE,Menu.FIRST+3,6,"帮助").setIcon(android.R.drawable.ic_menu_help);
		menu.add(Menu.NONE,Menu.FIRST+4,1,"添加").setIcon(android.R.drawable.ic_menu_add);
		menu.add(Menu.NONE,Menu.FIRST+5,4,"详细").setIcon(android.R.drawable.ic_menu_info_details);
		menu.add(Menu.NONE,Menu.FIRST+6,7,"发送").setIcon(android.R.drawable.ic_menu_send);
		menu.add(Menu.NONE,Menu.FIRST+7,3,"编辑").setIcon(android.R.drawable.ic_menu_edit);
		return true;
	}
	public boolean onOptionsItemSelected(MenuItem menu){
		switch(menu.getItemId()){
		case  Menu.FIRST+1:
			Toast.makeText(this, "您选择的是删除菜单项", Toast.LENGTH_LONG).show();
		    break;
		case  Menu.FIRST+2:
			Toast.makeText(this, "您选择的是保存菜单项", Toast.LENGTH_LONG).show();
		    break;
		case  Menu.FIRST+3:
			Toast.makeText(this, "您选择的是帮助菜单项", Toast.LENGTH_LONG).show();
		    break;
		case  Menu.FIRST+4:
			Toast.makeText(this, "您选择的是添加菜单项", Toast.LENGTH_LONG).show();
		    break;
		case  Menu.FIRST+5:
			Toast.makeText(this, "您选择的是详细菜单项", Toast.LENGTH_LONG).show();
		    break;
		case  Menu.FIRST+6:
			Toast.makeText(this, "您选择的是发送菜单项", Toast.LENGTH_LONG).show();
		    break;
		case  Menu.FIRST+7:
			Toast.makeText(this, "您选择的是编辑菜单项", Toast.LENGTH_LONG).show();
		    break;
		
		    
		}
		
		return false;
		
	}
	public void onOptionsMenuClosed(Menu menu){
		Toast.makeText(this, "菜单项关闭", Toast.LENGTH_LONG).show();
	}
	public void onOptionsPrepareOptionsMenu(Menu menu){
		Toast.makeText(this, "在菜单打开前执行此操作,可以做预处理", Toast.LENGTH_LONG).show();
	}

实现效果如下:

 


另一种方法是在配置文件menu/menu.xml配置菜单项

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/item1"
        android:title="添加"
        android:icon="@android:drawable/ic_menu_add"
        
        />
     <item
        android:id="@+id/item1"
        android:title="删除"
        android:icon="@android:drawable/ic_menu_add"
        
        />
      <item
        android:id="@+id/item1"
        android:title="编辑"
        android:icon="@android:drawable/ic_menu_add"
        
        />
       <item
        android:id="@+id/item1"
        android:title="帮助"
        android:icon="@android:drawable/ic_menu_add"
        
        />
    
    

</menu>

 然后将Activity修改为:

public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		super.getMenuInflater().inflate(R.menu.mymenu, menu);
//		menu.add(Menu.NONE,Menu.FIRST+1,5,"删除").setIcon(android.R.drawable.ic_menu_delete);
//		menu.add(Menu.NONE,Menu.FIRST+2,2,"保存").setIcon(android.R.drawable.ic_menu_save);
//		menu.add(Menu.NONE,Menu.FIRST+3,6,"帮助").setIcon(android.R.drawable.ic_menu_help);
//		menu.add(Menu.NONE,Menu.FIRST+4,1,"添加").setIcon(android.R.drawable.ic_menu_add);
//		menu.add(Menu.NONE,Menu.FIRST+5,4,"详细").setIcon(android.R.drawable.ic_menu_info_details);
//		menu.add(Menu.NONE,Menu.FIRST+6,7,"发送").setIcon(android.R.drawable.ic_menu_send);
//		menu.add(Menu.NONE,Menu.FIRST+7,3,"编辑").setIcon(android.R.drawable.ic_menu_edit);
		return true;
	}

 前面的代码注释掉了,两种方法都可以,但是为了以后的修改方便不要使用过多的硬代码,符合MVC模式,建议用第二种方法。

  • 上下文菜单 ContextMenu

上下文菜单类似于windows右键功能,以列表形式列出一系列菜单,这种在手机默认显示上下文菜单,在虚拟器显示选项菜单。因此读者了解即可

  • 子菜单   菜单中的菜单

Activity代码是:

public class MainActivity extends Activity {
	private String data[] = new String[] { "操作系统", "计算机网络",
			"计算机图形", "信息安全", "汇编语言" }; // 定义ListView的显示项
	private ListView listView = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		this.listView = new ListView(this);
		this.listView.setAdapter(new ArrayAdapter<String>(this,
				android.R.layout.simple_expandable_list_item_1, this.data));
		super.setContentView(this.listView);
		super.registerForContextMenu(this.listView) ;
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		SubMenu save=menu.addSubMenu("保存");
		SubMenu edit=menu.addSubMenu("编辑");
		save.add(Menu.NONE,Menu.FIRST + 1 , 1, "新建") ;
		save.add(Menu.NONE,Menu.FIRST + 2 , 2, "打开") ;
		save.add(Menu.NONE,Menu.FIRST + 3 , 3, "保存") ;
		edit.add(Menu.NONE,Menu.FIRST + 4 , 4, "撤消") ;
		edit.add(Menu.NONE,Menu.FIRST + 5 , 5, "恢复") ;
		
		return true;
	}
	
	public boolean onOptionsItemSelected(MenuItem item) {
		switch(item.getItemId()) {	// 判断操作的菜单ID
		case Menu.FIRST + 1: 
			Toast.makeText(this, "您选择的是“添加联系人”项", Toast.LENGTH_LONG).show() ;
			break ;
		case Menu.FIRST + 2: 
			Toast.makeText(this, "您选择的是“查看详情”项", Toast.LENGTH_LONG).show() ;
			break ;
		case Menu.FIRST + 3: 
			Toast.makeText(this, "您选择的是“删除信息”项", Toast.LENGTH_LONG).show() ;
			break ;
		case Menu.FIRST + 4: 
			Toast.makeText(this, "您选择的是“另存为”项", Toast.LENGTH_LONG).show() ;
			break ;
		case Menu.FIRST + 5: 
			Toast.makeText(this, "您选择的是“编辑”项", Toast.LENGTH_LONG).show() ;
			break ;
		}
		return false;
	}


}

 

效果:



 

 

 


 

 

0
0
分享到:
评论

相关推荐

    如何打破行政部绩效考核大锅饭现象.pptx

    标题中的“如何打破行政部绩效考核大锅饭现象”指的是企业在进行行政部职能人员绩效考核时,普遍存在的问题,即无论员工工作表现如何,考核结果相差不大,类似于“大锅饭”的现象。这种情况削弱了绩效考核的激励作用...

    Unity TreeView树形菜单

    每个`TreeViewItem`都有一个唯一的ID,以及与之关联的数据。通过`TreeView.Rebuild()`方法,我们可以更新整个视图,而`TreeView.SetSelection()`则用于选择或取消选择特定的节点。 为了实现可交互性,我们还需要...

    Android蓝牙无线对讲demo

    【Android蓝牙无线对讲demo】是一个专为Android设备设计的应用示例,它展示了如何通过蓝牙技术实现手机与蓝牙耳机之间的无线语音通信。该应用允许用户在连接蓝牙耳机后,进行实时的语音对讲,同时提供了音量调节功能...

    电子政务-商用电磁大锅灶.zip

    在“商用电磁大锅灶”这个特定场景下,我们可以理解为电子政务在商业烹饪设备管理领域的应用。商用电磁大锅灶是一种高效、节能的烹饪设备,广泛应用于餐馆、酒店等商业厨房。将这种设备与电子政务相结合,可能是为了...

    行业文档-设计装置-一种节能环保燃气大锅灶.zip

    标题中的“行业文档-设计装置-一种节能环保燃气大锅灶”揭示了这个压缩包内容主要涉及的是关于节能环保型燃气大锅灶的设计与技术说明。这种装置通常用于餐饮业或者大型食堂,旨在提供高效且环保的烹饪解决方案。接...

    「大锅乱炖10大H5前端框架」.docx

    「大锅乱炖10大H5前端框架」.docx

    大班:超级大锅乐多多.docx

    - 孩子能将滚筒和陀螺组合成“大锅”,展示出丰富的想象力和创新思维,将日常生活经验融入游戏。 3. **自我保护意识与身体协调性**: - 孩子在差点摔倒后能迅速调整身体,保持平衡,体现出自我保护意识和身体...

    大锅酿造:允许您在改装的大锅中酿造药水

    大锅酿造 使您可以在改良的大锅中酿造药水。 要创建大锅,只需将香草大锅放在手工制作的工作台上,并在其下方放上火焰粉。 所有食谱均与香草相同。 现在有一个“额外的内容”选项,使您可以在酿造大锅中为物品注入...

    初中语文语文论文从“大锅饭”到“联产承包”

    初中语文语文论文从“大锅饭”到“联产承包”

    最简单使用的天线——罐头天线,可做正馈大锅馈源!

    在实际应用中,如果手头没有正馈大锅,也可以将罐头天线尝试用在偏馈天线上进行测试,不过这种情况下其性能可能略有不同。 总的来说,罐头天线的DIY制作方法简单,易于操作,不需要太多的电子和无线电知识。它是一...

    CauldronGit:大锅吉特

    初始化子模块:git submodule update --init --recursive 设置工作区:gradlew setupCauldron 构建二进制文件:gradlew buildPackages 注意:所有二进制文件都将在发行版文件夹中支撑大锅单击此处向单击此处 [成为 ...

    魔术大锅-项目开发

    "魔术大锅-项目开发"是一个独特且富有创意的IT项目,它将技术与魔法主题巧妙结合,旨在为用户带来一种全新的互动体验。这个项目的核心是利用编程技术,特别是React框架,来创建一个能响应咒语施放的动态照明效果。...

    CauldronMods:蒸汽车间多元宇宙哨兵大锅甲板的Mod改编

    大锅模 什么是大锅? 大锅是 Than Games合作纸牌游戏的定制的粉丝扩展。这些甲板是由他的室友和他的兄弟Matthew Bishop(@Tosx)设计的。基本设定于2013年左右开始,最后一组设定于2019年完成。 该项目将把梦幻般的...

    您无法在这个令人毛骨悚然的大锅上爬行!-项目开发

    【标题】"您无法在这个令人毛骨悚然的大锅上爬行!-项目开发" 描述了一款互动式的万圣节儿童道具。这个项目显然旨在为孩子们创造一个恐怖且有趣的体验,让他们在接近一个模拟女巫大锅时感受到紧张刺激的氛围。这种...

    (3.0版本)自己写的struts2+hibernate+spring实例

    中间加一些小技巧之类的.不过我觉得还是值得一些关注的朋友期待的. 如果没有意外.这个版本应该是一个定型的版本了.在这段期间.有很多朋友问的问题大部分其实都已经不是struts2的范围了.有些都是hibernate和...

    electrode-native-showcaseapp-android:展示电极原生MiniApp和API的原生应用

    ElectrodeNativeAndroidShowCase 这是一个本地android应用程序,其中包含包装在容器内的三个MiniApps和APIMiniApps: 蜜蜂: 此应用程序演示了几种将miniapp集成到本机应用程序中的不同方法。 以下大锅配置用于生成...

    卫星搜星软件_DishPointerPro2.0已付费汉化版

    至于安装,压缩包中的“DishPointerPro2.0已付费汉化版.apk”文件是适用于Android设备的应用程序安装包。用户只需下载并安装该文件,即可在手机上使用这款强大的卫星搜星工具。需要注意的是,为了确保软件正常运行,...

    iis软件资源的的提供

    【标题】:“IIS软件资源的提供” 在IT领域中,Internet Information Services(IIS)是微软公司开发的一款强大的Web服务器应用程序,广泛用于发布网页内容和托管网络应用程序。标题“iis软件资源的的提供”暗示...

Global site tag (gtag.js) - Google Analytics