android开发之res下的menu (xml+代码的形式)
转载请注明出处:http://blog.csdn.net/fth826595345/article/details/9199393
先来看Menu XML文件如何编写:
- <?xml version="1.0" encoding="utf-8"?>
- <!-- Menu对应一个Menu的格式 -->
- <menu xmlns:android="http://schemas.android.com/apk/res/android">
- <!-- 我们分三种情况进行设置 -->
- <!-- Part 1 :普通情况,我们增加三个MenuItem,item对应MenuItem的格式。item中的android:id直接就是item的ID,即我们menu.add()中的第二个参数。 -->
- <item android:id="@+id/c11_close"
- <!-- title为显示的文字,即menu.add()中的第三个参数的第四个参数,可采用@string/xxx -->
- android:title="Close"
- <!-- orderInCategory表明摆放的顺序,不一定从0还是计算,但必须大于等于0,数值小的位于前,如果数值一样,在我们这个例子中3又两个值,则安顺序摆放,此相当于menu.add()中的第三个参数order。当然我们建议从0,1,2,3....这样依次给出,并且与XML行文的顺序一致。 -->
- android:orderInCategory = "3"
- <!-- icon设置图标,不言自喻 -->
- android:icon="@drawable/android_focused" />
- <item android:id="@+id/c11_no_icon"
- android:orderInCategory = "2"
- android:title = "Sans Icon" />
- <item android:id="@+id/c11_disabled"
- android:orderInCategory="4"
- android:enabled="false"
- android:title="Disabled" />
- <!-- Part 2 :Group的情况,我们在Group中放入2个item,如果我们要显示3.4的方式,可以增加group的参数android:checkableBehavior来设置,single表示radio box,all表示checkbox,none表示checkable=flase。group中的android:id就是Gourp_ID,即menu.add()中的第一个参数。在这个例子中,我们设置这个group不可视,如果需要显示,代码为:menu.setGroupVisible(R.id.c11_other_stuff, true);-->
- <group android:id="@+id/c11_other_stuff"
- <!-- Item由android:orderInCategory来设置item的顺序,在Group中我们可以通过menuCategory来设置另一个category,里面的顺序和default Category是不方在一起比较,例如这里么我们给出0和5,如图所示,在显示完default Category,再显示这个sendonary的内容。 -->
- android:menuCategory="secondary"
- android:checkableBehavior="single"
- android:visible="false" >
- <item android:id="@+id/c11_later"
- android:orderInCategory="0"
- android:title="2nd-To-Last" />
- <item android:id="@+id/last"
- android:orderInCategory="5"
- android:title="Last" />
- </group>
- <!-- Part 3 :子menu的设置,将在menuItem内部嵌套一个<Menu>,在这个例子中的子菜单,试验了快捷键的方式 -->
- <item android:id="@+id/c11_submenu"
- android:orderInCategory="3"
- android:title="A submenu" >
- <menu>
- <item android:id="@+id/c11_non_ghost"
- android:title="Non-Ghost"
- android:visible="true"
- android:alphabeticShortcut="n" />
- <item android:id="@+id/c11_ghost"
- android:title="Ghost"
- android:visible="true"
- android:alphabeticShortcut="g" />
- </menu>
- </item> <!-- end of Part 3 -->
- </menu>
1.创建menu xml设置菜单
1.在res/menu目录下定义如下菜单xml文件;
- <?xml version="1.0" encoding="utf-8"?>
- <menu xmlns:android="http://schemas.android.com/apk/res/android" >
- <item
- android:id="@+id/close"
- android:icon="@drawable/ic_launcher"
- android:orderInCategory="3"
- android:title="Close"/>
- <item
- android:id="@+id/no_icon"
- android:orderInCategory="2"
- android:title="Sans Icon"/>
- <item
- android:id="@+id/disabled"
- android:enabled="true"
- android:orderInCategory="4"
- android:title="Disabled"/>
- <!-- orderInCategory表示的是item的排序-->
- <group
- android:id="@+id/other_stuff"
- android:menuCategory="secondary"
- android:visible="true" >
- <item
- android:id="@+id/later"
- android:orderInCategory="0"
- android:title="2nd-To-Last"/>
- <item
- android:id="@+id/last"
- android:orderInCategory="1"
- android:title="Last"/>
- </group>
- <!--表示的是二级菜单-->
- <item
- android:id="@+id/submenu"
- android:orderInCategory="3"
- android:title="A Submenu">
- <menu>
- <item
- android:id="@+id/non_ghost"
- android:alphabeticShortcut="n"
- android:title="Non-Ghost"
- android:visible="true"/>
- <item
- android:id="@+id/ghost"
- android:alphabeticShortcut="g"
- android:title="A Ghost"
- android:visible="true"/>
- </menu>
- </item>
- </menu>
2.在代码使用
- package com.src.hero.org;
- import android.app.Activity;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.Menu;
- import android.view.MenuInflater;
- import android.view.MenuItem;
- /**
- * Receiver To Study
- *
- * @author Hero
- *
- */
- public class ReceiverActivity extends Activity {
- /** Called when the activity is first created. */
- private static final String TAG="ReceiverActivity";
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // TODO Auto-generated method stub
- MenuInflater mflater=new MenuInflater(this);
- mflater.inflate(R.menu.menuitem, menu);
- return super.onCreateOptionsMenu(menu);
- /*或者:
- getMenuInflater().inflate(R.menu.menuitem);
- return true; */
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- // TODO Auto-generated method stub
- switch(item.getItemId()){
- case R.id.close:
- Log.v(TAG, "------------close");
- break;
- case R.id.no_icon:
- Log.v(TAG, "------------noicon");
- break;
- case R.id.submenu:
- Log.v(TAG, "------------submenu");
- break;
- case R.id.non_ghost:
- Log.v(TAG, "------------non_ghost");
- break;
- case R.id.ghost:
- Log.v(TAG, "------------ghost");
- break;
- case R.id.disabled:
- Log.v(TAG, "------------disabled");
- break;
- case R.id.last:
- Log.v(TAG, "------------last");
- break;
- case R.id.later:
- Log.v(TAG, "------------laster");
- break;
- default:
- break;
- }
- return super.onOptionsItemSelected(item);
- }
- }
----上面方法对应的效果图
1.通过代码创建设置菜单
1.直接在Activity中重写父类相应的方法;
- // 在onCreateOptionsMenu设置菜单内容;
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // 模拟原生系统音乐播放器歌曲的Menu功能
- // 调用Menu.add方法添加Menu项
- /*
- *
- * menu.add(0, 0, 0, "全部播放");
- *
- *
- *
- * menu.add(0, 1, 1, "音乐库");
- *
- *
- *
- * menu.add(0, 2, 2, "全部随机播放");
- */
- menu.add(0, 0, 0, "全部播放").setIcon(android.R.drawable.ic_menu_camera);
- menu.add(0, 1, 1, "音乐库").setIcon(android.R.drawable.ic_menu_help);
- menu.add(0, 2, 2, "全部随机播放").setIcon(android.R.drawable.ic_menu_revert);
- return super.onCreateOptionsMenu(menu);
- }
- // 在onPrepareOptionsMenu中动态改Menu
- @Override
- public boolean onPrepareOptionsMenu(Menu menu) {
- // TODO Auto-generated method stub
- /*
- *
- * 在onPrepareOptionsMenu(Menumenu)函数中,首先需要调用:
- *
- * super.onPrepareOptionsMenu(menu);
- *
- * menu.clear();
- *
- * 如果没有clear而直接add的话,那么菜单中菜单项是会“追加”的,这样随着你不停的点menu键,菜单项就不停的增加。
- *
- * 另外,android系统默认的菜单样式是支持最多3个一行,如果有4项就每行2个有2行...如果想自定义样式,可以使用xml文件定义样式。
- */
- if (1 < 2)
- {
- menu.add(0, 0, 0, "menu_test").setIcon(
- android.R.drawable.ic_menu_camera);
- menu.add(0, 1, 1, "音乐库").setIcon(android.R.drawable.ic_menu_help);
- menu.add(0, 2, 2, "全部随机播放").setIcon(
- android.R.drawable.ic_menu_revert);
- }
- else
- {
- menu.add(0, 0, 0, "全部播放")
- .setIcon(android.R.drawable.ic_menu_camera);
- menu.add(0, 1, 1, "音乐库").setIcon(android.R.drawable.ic_menu_help);
- menu.add(0, 2, 2, "全部随机播放").setIcon(
- android.R.drawable.ic_menu_revert);
- }
- return super.onCreateOptionsMenu(menu);
- }
- // 在onOptionsItemSelected方法中设置选择菜单的监听事件
- /**
- *
- * 如果要添加点击事件,则要覆盖onOptionsItemSelected(MenuItem item)方法。
- *
- * 给MenuItem设置事件监听的方法
- *
- *
- */
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case 0:
- System.out.println("音乐");
- break;
- case 1:
- System.out.println("音乐库");
- break;
- case 2:
- System.out.println("全部随机播放");
- break;
- }
- return super.onOptionsItemSelected(item);
- }
转载请注明出处:http://blog.csdn.net/fth826595345/article/details/9199393
android开发之res下的menu (xml+代码的形式)的更多相关文章
- android开发之Animations的使用(二)
android开发之Animations的使用(二) 本博文主要讲述的是android开发中的animation动画效果的使用,和上一篇博文不同的是,此次四种动画效果,主要使用的是xml文件实现的,提 ...
- 【Android UI】Android开发之View的几种布局方式及实践
引言 通过前面两篇: Android 开发之旅:又见Hello World! Android 开发之旅:深入分析布局文件&又是“Hello World!” 我们对Android应用程序运行原理 ...
- Android开发之PopupWindow
/* * Android开发之PopupWindow * * Created on: 2011-8-8 * Author: blueeagle * Email: liujiaxiang@g ...
- Android 开发之旅:深入分析布局文件&又是“Hello World!”
http://www.cnblogs.com/skynet/archive/2010/05/20/1740277.html 引言 上篇可以说是一个分水岭,它标志着我们从Android应用程序理论进入实 ...
- Android开发之旅4:应用程序基础及组件
引言 为了后面的例子做准备,本篇及接下来几篇将介绍Android应用程序的原理及术语,这些也是作为一个Android的开发人员必须要了解,且深刻理解的东西.本篇的主题如下: 1.应用程序基础 2.应用 ...
- Android开发之旅2:HelloWorld项目的目录结构
引言 前面Android开发之旅:环境搭建及HelloWorld,我们介绍了如何搭建Android开发环境及简单地建立一个HelloWorld项目,本篇将通过HelloWorld项目来介绍Androi ...
- android开发之Animation(五)
android开发之Animation的使用(五) 本博文主要讲述的是Animation中的AnimationLisenter的用法,以及此类的一些生命周期函数的调用,代码实比例如以下: MainAc ...
- Android开发之Android Material Design Toolbar自定义随笔
一.自定义Toolbar的menu: 在menu下新建menu.xml文件,自定义menu的样式: <menu xmlns:android="http://schemas.androi ...
- Android开发之旅: Intents和Intent Filters(理论部分)
引言 大部分移动设备平台上的应用程序都运行在他们自己的沙盒中.他们彼此之间互相隔离,并且严格限制应用程序与硬件和原始组件之间的交互. 我们知道交流是多么的重要,作为一个孤岛没有交流的东西,一定毫无意义 ...
随机推荐
- AngularJs + ASP.NET MVC
[AngularJs + ASP.NET MVC]使用AntularJs快速建立ASP.NET MVC SPA網站 這幾天接觸到了AngularJs的美麗,讓饅頭有點躍躍欲試使用AngularJs來做 ...
- OpenGL入门【1 高速入门】
// OpenGL.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include &l ...
- 初探Django线程发送邮件
最近一直在纠结一个邮件发送的问题. 在本地Linux下搭建程序,不填写EMAIL设置就可以成功发送邮件,在远端的云服务器下的Linux环境就发送不了.在windows下搭建的程序也不能发送注册邮件,很 ...
- 数以百万计美元的融资YO是什么东东?
给自己做个广告哈,新栏目"面试"已经推出,回复"面试"就可以获取. 这两天最火的应用是什么.非yo莫属,堪称史上最简单的社交应用,仅仅能向好友发送一个yo. 出 ...
- 使用OpenWrt的SDK
原文:http://wiki.openwrt.org/doc/howto/obtain.firmware.sdk 为什么要使用SDK: Reasons for using the SDK are: C ...
- sql 事务日志传输
原文:sql 事务日志传输 概述 可以使用日志传送将事务日志不间断地从一个数据库(主数据库)发送到另一个数据库(辅助数据库).不间断地备份主数据库中的事务日志,然后将它们复制并还原到辅助数据库,这将使 ...
- C#发送邮件三种方法(Localhost,SMTP,SSL-SMTP)
原文:C#发送邮件三种方法(Localhost,SMTP,SSL-SMTP) 最近公司由于一个R&I项目的需要,用户要求在购买产品或出货等一些环节,需要发送邮件提醒或者说每周一让系统自动采集数 ...
- HPQC HP Quality Center windows 服务
HPQC HP Quality Center windows 服务已经启动的话,就不用运行run.bat 两个是一样的效果.
- WXPP QuickFramework V2.0
微信快速开发框架(WXPP QuickFramework)V2.0版本上线--源码已更新至github 用了一个多星期的时间,把微信快速开发框架进行了改进,之前1.0版本针对的是普通订阅号,V2. ...
- Fitnesse集成TestLink
TestLink作为开源测试管理工具,可以进行测试工程.测试计划以及执行计划的管理,而且TestLink团队提供了XML-PRC的接口供第三方工具调用,接口支持程度也比较好. Fitnesse作为开源 ...