当前位置:操作系统 > 安卓/Android >>

Android应用开发学习笔记之菜单

Android中的菜单分为选项菜单(OptionMenu)和上下文菜单(Context Menu)。通常使用菜单资源文件创建菜单。菜单资源文件通常放置在res\menu目录下,这个目录默认情况下是不存在的,需要我们自己创建该目录。菜单资源的根元素通常是<menu></menu>标记,在该标记中可以包含两种子元素:

1、<item></item>标记,用于定义菜单项。如果某个菜单项中还包括子菜单,可以通过在该菜单项中再包含<menu></menu>标记来实现。

2、<group></group>标记,用于将多个<item></item>标记定义的菜单包装成一个菜单组。

 

一、菜单的创建步骤

1、  选项菜单

当用户单击菜单按钮时,弹出的菜单就是选项菜单,创建选项菜单的步骤如下:

(1)      重写Activity的onCreateOptionsMenu()方法。在该方法中,首先创建一个用于解析菜单资源文件的MenuInflater对象,然后调用该对象的inflate()方法解析一个菜单资源文件,并把解析后的菜单保存在menu中。关键代码如下:


[java]
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater=new MenuInflater(this);       //实例化一个MenuInflater对象  
    inflater.inflate(R.menu.optionmenu, menu);          //解析菜单文件  
    return true; 

@Override
public boolean onCreateOptionsMenu(Menu menu) {
 MenuInflater inflater=new MenuInflater(this);  //实例化一个MenuInflater对象
 inflater.inflate(R.menu.optionmenu, menu);   //解析菜单文件
 return true;
}

 

(2)      重写onOptionsItemSelected()方法,用于当菜单被选择时,做出相应处理。关键代码举例如下:


[java]
// Called when an options item is clicked  
    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
        switch (item.getItemId()) { 
                case R.id.menu_setting: 
                        Log.d(TAG, "menu item setting is selected."); 
                        startActivity(new Intent(this, Settings.class)); 
                        break; 
                case R.id.menu_history: 
                        Log.d(TAG, "menu item history is selected."); 
                        startActivity(new Intent(this, History.class)); 
                        break; 
                case R.id.menu_about: 
                        Log.d(TAG, "menu item about is selected."); 
                        break; 
        } 
        return true; 

// Called when an options item is clicked
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
                case R.id.menu_setting:
                        Log.d(TAG, "menu item setting is selected.");
                        startActivity(new Intent(this, Settings.class));
                        break;
                case R.id.menu_history:
                        Log.d(TAG, "menu item history is selected.");
                        startActivity(new Intent(this, History.class));
                        break;
                case R.id.menu_about:
                        Log.d(TAG, "menu item about is selected.");
                        break;
        }
        return true;
}

 

 

2、  上下文菜单

当用户在某个控件上长时间按住不放,这时弹出的菜单就是上下文菜单。创建上下文菜单的步骤如下:

(1)、在Activity的onCreate()方法中注册上下文菜单,例如,为文本框组件注册上下文菜单(也就是说在按住该文本框时,才显示上下文菜单),可以使用下面的代码,:


[java]
TextView tv = (TextView)findViewById(R.id.textView); 
registerForContextMenu(tv); 

TextView tv = (TextView)findViewById(R.id.textView);
registerForContextMenu(tv);

 

(2)、重写Activity的onCreateContextMenu()方法,在该方法中,首先创建一个用于解析菜单资源的MenuInflater对象,然后调用该对象的inflate()方法解析菜单资源文件,并把解析后的菜单保存在menu中,最后为菜单头设置图标和标题。关键代码如下:


[java]
@Override 
public void onCreateContextMenu(ContextMenu menu, View v, 
        ContextMenuInfo menuInfo) { 
    MenuInflater inflator=new MenuInflater(this);   //实例化一个MenuInflater对象  
    inflator.inflate(R.menu.contextmenu, menu);     //解析菜单文件  
    menu.setHeaderIcon(R.drawable.ic_launcher);     //为菜单头设置图标  
    menu.setHeaderTitle("选择颜色:");           //为菜单头设置标题  
 

 @Override
 public void onCreateContextMenu(ContextMenu menu, View v,
   ContextMenuInfo menuInfo) {
  MenuInflater

补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,