Android通过XML来定义Menu

原创 2015年11月20日 15:47:24


直接在代码中添加菜单项,给菜单项分组等,这是比较传统的做法,它存在着一些不足。
比如说,为了响应每个菜单项,我们需要用常量来保存每个菜单项的ID等。
为此,Android提供了一种更好的方式,就是把menu也定义为应用程序的资源,通过android对资源的本地支持,使我们可以更方便地实现菜单的创建与响应。b
本文就介绍如何使用XML文件来加载和响应菜单,我们需要做这几步:


1.在/res目录下创建menu文件夹
2.在menu目录下使用与menu相关的元素定义xml文件,文件名是随意的,android会自动为其生成资源ID。
例如:R.menu.menu对应menu目录的menu.xml资源文件
3.使用xml文件的资源ID,将xml文件中定义的菜单项添加到menu对象中
4.响应菜单项时,使用每个菜单项对应的资源ID。


package cn.fansunion.menu;


import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;
import cn.fansunion.R;


public class OptionMenuWithXmlActivity extends Activity {
	
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.option_menu);
	}


	public boolean onCreateOptionsMenu(Menu menu) {	
		MenuInflater inflater = getMenuInflater();
	    inflater.inflate(R.menu.menu, menu);
		return true;
	}


	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case R.id.menu_one:
			Toast.makeText(this, "你点击了menu_one", Toast.LENGTH_LONG).show();
			break;
		case R.id.submenu_one:
			Toast.makeText(this, "你点击了submenu_one", Toast.LENGTH_LONG).show();
			break;
		default:
			return super.onOptionsItemSelected(item);
		}
		return true;
	}
}


rec/menu目录
menu.xml
<?xml version="1.0" encoding="utf-8"?>


<menu xmlns:android="http://schemas.android.com/apk/res/android" >


    <item
        android:id="@+id/menu_one"
        android:orderInCategory="3"
        android:title="Android应用开发真有趣"/>


    <item
        android:id="@+id/menu_two"
        android:orderInCategory="2"
        android:title="iOS开发也不错"/>


    <item
        android:id="@+id/menu_three"
        android:enabled="false"
        android:orderInCategory="4"
        android:title="Java服务端也不错"/>


    <!-- Part 2:子menu的设置,将在menuItem内部嵌套一个<Menu>,在这个例子中的子菜单,试验了快捷键的方式 -->
    <item
        android:id="@+id/submenu"
        android:orderInCategory="3"
        android:title="小雷的兴趣">
<menu >


            <item
                android:id="@+id/submenu_one"
                android:alphabeticShortcut="n"
                android:title="互联网技术"
                android:visible="true"/>


            <item
                android:id="@+id/submenu_two"
                android:alphabeticShortcut="g"
                android:title="投资理财"
                android:visible="true"/>
        </menu></item>


</menu>




更多关于通过XML定义Menu的信息,参考以下3篇文章,Copy一大堆别人的,大家都一样的API和属性用法,挺没有意思的。


参考资料:
Android通过XML来定义Menu
http://blog.csdn.net/jaycee110905/article/details/8765082


Android 中自定义 Menu 资源
http://ybxu-123.blog.163.com/blog/static/594737702010680575834/


Android菜单详解(五)——使用XML生成菜单
http://www.cnblogs.com/codingmyworld/archive/2011/08/28/2155594.html
版权声明:小雷FansUnion的版权声明

相关文章推荐

Android通过XML来定义Menu

利用LayoutInflater infalter = getLayoutInflater();从XML文件中获取Layout的样式。在Menu中也可以采用类似的方式。我们在onCreateOpti...

Android通过XML来定义Menu

如果是xml形式的话。在onOptionsItemSelected里面 switch{ case(R.id.XXX)}就可以对应你的各个menu的点击事件。如果是代码创建,那就是你创建时的id。 例如...

android自定义弹出menu

  • 2011-12-07 23:42
  • 201KB
  • 下载

android自定义menu

  • 2015-04-17 10:59
  • 530KB
  • 下载

Android读取资源文件——读取原始Xml内容和使用Menu文件

一、使用原始XML①在res下创建一个文件夹xml,里面创建一个test.xml的资源文件 <customer name="tom" age=

Android ApiDemos示例解析(25):App->Menu->Inflate from XML

本例演示了如何从Menu 资源(XML 定义)展开菜单项。这个例子的onCreate 采用了使用代码来创建Activity 界面的方法 而通常的方法是采用Layout资源的方法。如果你有兴趣了解一下如...

样式、主题、原始XML资源、Android程序国际化、Menu资源

样式资源主要用于对组件的显示样式jin

Android菜单设计(1) : 使用xml文件布局创建 options menu

1. 准备工作   下载几张图片,为menu锦上添花,推荐一个图片网站:http://www.easyicon.cn/   2. 新建android项目   在项目的res文件下面建立一个...

How to create custom navigation menu in SharePoint with XML data source 使用XML数据源在SharePoint创建自定义导航菜单

How to create custom navigation menu in SharePoint with XML data source Did you ever wanted to crea...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)