`

菜单

 
阅读更多
menu键触发

三种形式:普通的option menu;上下文菜单 context menu;子菜单sub menu;

创建方式:一:在xml文件中创建menu资源,二在java代码中创建;





标签 描述
menu 是其他两个标签的容器,必须有一个menu标签作为该文件的根标签。
group 一个可选的标签,在该标签下的item内容分为一组,通过分组可以实现多个tiem共享属性。

tiem 创建了一个menuItem,即一个menu中单独的条目,在该标签下开可以包含menu标签,代表子菜单。



android自带了一些图标资源

java中使用:menu.setIcon(android.R.drawable.ic_menu_save)

xml中使用:android:icon="@android:drawable/ic_menu_sava"

普通的option menu

一:通过xml文件创建,创建在menu文件夹下:

android默认显示2行3列6个菜单项,超过留个,则会有个more...选项。

orderInCategory表示的是item的排序

Xml代码 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
        android:id="@+id/item1" 
        android:title="save" 
        android:orderInCategory="0"/> 
    <item 
        android:id="@+id/item2" 
        android:orderInCategory="1"    
        android:title="管理"/> 
    <item 
        android:id="@+id/item3" 
        android:title="帮助"/> 
    <item 
        android:id="@+id/item4" 
        android:title="信息"/> 
    <item 
        android:id="@+id/item5" 
        android:title="分享"/> 
      
    <group 
        android:id="@+id/group1" 
        android:menuCategory="secondary"> 
        <item 
            android:id="@+id/groupItem1" 
            android:title="删除"/> 
        <item 
            android:id="@+id/groupItem2" 
            android:title="编辑"/> 
    </group> 
</menu> 

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/item1"
        android:title="save"
        android:orderInCategory="0"/>
    <item
        android:id="@+id/item2"
        android:orderInCategory="1" 
        android:title="管理"/>
    <item
        android:id="@+id/item3"
        android:title="帮助"/>
    <item
        android:id="@+id/item4"
        android:title="信息"/>
    <item
        android:id="@+id/item5"
        android:title="分享"/>
   
    <group
        android:id="@+id/group1"
        android:menuCategory="secondary">
        <item
            android:id="@+id/groupItem1"
            android:title="删除"/>
        <item
            android:id="@+id/groupItem2"
            android:title="编辑"/>
    </group>
</menu>




创建了options menu需要覆盖onCreatOptionsMenu(Menu menu)方法。在该方法中通过MenuInflater.inflater()方法为menu加入menu资源。

Java代码 
import android.app.Activity;  
import android.os.Bundle;  
import android.view.Menu;  
import android.view.MenuInflater;  
 
public class MainActivity extends Activity {  
 
    @Override 
    protected void onCreate(Bundle savedInstanceState) {  
        // TODO Auto-generated method stub  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
    }  
          
         @Override    
            public boolean onCreateOptionsMenu(Menu menu) {    
                 MenuInflater inflater=getMenuInflater();    
                 inflater.inflate(R.menu.activity_main, menu);    
                return super.onCreateOptionsMenu(menu);    
          }    


import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
         MenuInflater inflater=getMenuInflater(); 
         inflater.inflate(R.menu.activity_main, menu); 
        return super.onCreateOptionsMenu(menu); 
  } 
}

很奇怪,之前怎么都运行不了,重新创建复制代码重新编译就可以运行了。











通过java代码创建menu:

重写onCreateOptionsMenu方法创建一个menu,Add方法添加MenuItem

重写onOptionItemSelected方法,监听menu操作。







Java代码 
import android.app.Activity;  
import android.os.Bundle;  
import android.view.Menu;  
import android.view.MenuItem;  
import android.widget.Toast;  
 
public class MainActivity extends Activity {  
 
    @Override 
    protected void onCreate(Bundle savedInstanceState) {  
        // TODO Auto-generated method stub  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
    }  
        //覆盖该方法,创建menu  
         @Override    
            public boolean onCreateOptionsMenu(Menu menu) {   
             //通过add方法,创建一个menuItem对象,参数为组ID,ItemID,顺序,显示的文本  
                 menu.add(0, 1, 1, "分享").setIcon(android.R.drawable.ic_menu_share);  
                 menu.add(0, 2, 2, "保存").setIcon(android.R.drawable.ic_menu_save);  
                return super.onCreateOptionsMenu(menu);  
          }    
         //监听menu点击事件  
         public boolean onOptionsItemSelected(MenuItem item){  
            //根据id判断点击的位置  
             if(item.getItemId()==1)  
             {  
                 Toast.makeText(this, "你点击了分享", Toast.LENGTH_LONG).show();  
             }  
             else if(item.getItemId()==2)  
             {  
                 Toast.makeText(this, "你点击了保存", Toast.LENGTH_LONG).show();        
             }  
             return super.onOptionsItemSelected(item);  
         }  


import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//覆盖该方法,创建menu
@Override 
    public boolean onCreateOptionsMenu(Menu menu) {
//通过add方法,创建一个menuItem对象,参数为组ID,ItemID,顺序,显示的文本
         menu.add(0, 1, 1, "分享").setIcon(android.R.drawable.ic_menu_share);
         menu.add(0, 2, 2, "保存").setIcon(android.R.drawable.ic_menu_save);
return super.onCreateOptionsMenu(menu);
  } 
//监听menu点击事件
public boolean onOptionsItemSelected(MenuItem item){
//根据id判断点击的位置
if(item.getItemId()==1)
{
Toast.makeText(this, "你点击了分享", Toast.LENGTH_LONG).show();
}
else if(item.getItemId()==2)
{
Toast.makeText(this, "你点击了保存", Toast.LENGTH_LONG).show();
}
return super.onOptionsItemSelected(item);
}
}









子菜单SubMenu:

xml中创建:在item标签下包含新的menu标签。menu下的内容为子菜单。

java代码创建:



Java代码 
import android.app.Activity;  
import android.os.Bundle;  
import android.view.Menu;  
import android.view.SubMenu;  
 
public class MainActivity extends Activity {  
 
    @Override 
    protected void onCreate(Bundle savedInstanceState) {  
        // TODO Auto-generated method stub  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
    }  
        //覆盖该方法,创建menu  
         @Override    
            public boolean onCreateOptionsMenu(Menu menu) {   
             //通过add方法,创建一个menuItem对象,参数为组ID,ItemID,顺序,显示的文本  
                 menu.add(0, 1, 1, "分享").setIcon(android.R.drawable.ic_menu_share);  
                 menu.add(0, 2, 2, "保存").setIcon(android.R.drawable.ic_menu_save);  
                 //创建子菜单,创建submenu对象,该对象调用add方法创建子菜单条目  
                 SubMenu subMenu=menu.addSubMenu(1, 10, 10, "编辑");  
                 subMenu.setIcon(android.R.drawable.ic_menu_edit);  
                 //增加子菜单条目  
                 subMenu.add(2, 11, 11, "增加");  
                 subMenu.add(2, 11, 11, "减少");  
                return super.onCreateOptionsMenu(menu);  
          }    


import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.SubMenu;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//覆盖该方法,创建menu
@Override 
    public boolean onCreateOptionsMenu(Menu menu) {
//通过add方法,创建一个menuItem对象,参数为组ID,ItemID,顺序,显示的文本
         menu.add(0, 1, 1, "分享").setIcon(android.R.drawable.ic_menu_share);
         menu.add(0, 2, 2, "保存").setIcon(android.R.drawable.ic_menu_save);
         //创建子菜单,创建submenu对象,该对象调用add方法创建子菜单条目
         SubMenu subMenu=menu.addSubMenu(1, 10, 10, "编辑");
         subMenu.setIcon(android.R.drawable.ic_menu_edit);
         //增加子菜单条目
         subMenu.add(2, 11, 11, "增加");
         subMenu.add(2, 11, 11, "减少");
return super.onCreateOptionsMenu(menu);
  } 
}





点击编辑:





上下文菜单 context menu:

长按某选项弹出的菜单。

为任何的view绑定一个context menu,不过用的最多的是在listview中为listview的条目绑定一个contextmenu。不小心extends 成了Activity造成后面很多错误。





Java代码 
import android.app.ListActivity;  
import android.os.Bundle;  
import android.view.ContextMenu;  
import android.view.ContextMenu.ContextMenuInfo;  
import android.view.Menu;  
import android.view.MenuItem;  
import android.view.View;  
import android.widget.AdapterView.AdapterContextMenuInfo;  
import android.widget.ArrayAdapter;  
import android.widget.Toast;  
 
public class MainActivity extends ListActivity   
{  
    private static final String[] strs=new String[]{  
        "first","second","third","fourth","fifth"};  
    public static final int CONTEXT_MENU_1=Menu.FIRST;  
    public static final int CONTEXT_MENU_2=Menu.FIRST+1;  
      
    @Override 
    protected void onCreate(Bundle savedInstanceState)   
    {  
        super.onCreate(savedInstanceState);   
        //绑定适配器  
        setListAdapter(new ArrayAdapter<String>  
        (this, android.R.layout.simple_list_item_1,strs));  
        registerForContextMenu(getListView());  
    }  
      
      
    //创建menu  
    public void onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo menuInfo){  
        super.onCreateContextMenu(menu, v, menuInfo);  
        menu.add(0, CONTEXT_MENU_1, 1, "Context Menu 1");  
        menu.add(0, CONTEXT_MENU_2, 2, "Context Menu 2");  
        menu.setHeaderTitle("context Menu Title");//设置菜单标题  
    }  
      
      
    //响应menu选择事件  
    public boolean onContextItemSelected(MenuItem item)  
    {  
        //获得listview的itemID  
        AdapterContextMenuInfo info=(AdapterContextMenuInfo)item.getMenuInfo();  
        switch(item.getItemId())  
        {  
        case 1:Toast.makeText(this, "你点击了第一项", Toast.LENGTH_LONG).show();  
        case 2:Toast.makeText(this, "你点击了第二项", Toast.LENGTH_LONG).show();     
        }  
        return super.onContextItemSelected(item);  
    }  


import android.app.ListActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.ArrayAdapter;
import android.widget.Toast;

public class MainActivity extends ListActivity
{
private static final String[] strs=new String[]{
"first","second","third","fourth","fifth"};
public static final int CONTEXT_MENU_1=Menu.FIRST;
public static final int CONTEXT_MENU_2=Menu.FIRST+1;

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//绑定适配器
setListAdapter(new ArrayAdapter<String>
(this, android.R.layout.simple_list_item_1,strs));
registerForContextMenu(getListView());
}


//创建menu
public void onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo menuInfo){
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(0, CONTEXT_MENU_1, 1, "Context Menu 1");
menu.add(0, CONTEXT_MENU_2, 2, "Context Menu 2");
menu.setHeaderTitle("context Menu Title");//设置菜单标题
}


//响应menu选择事件
public boolean onContextItemSelected(MenuItem item)
{
//获得listview的itemID
AdapterContextMenuInfo info=(AdapterContextMenuInfo)item.getMenuInfo();
switch(item.getItemId())
{
case 1:Toast.makeText(this, "你点击了第一项", Toast.LENGTH_LONG).show();
case 2:Toast.makeText(this, "你点击了第二项", Toast.LENGTH_LONG).show();
}
return super.onContextItemSelected(item);
}
}











点击其中一项:





分享到:
评论

相关推荐

    labview菜单响应设计

    菜单结构为: 系统(启动、退出)操作(升温、降温)、帮助 菜单行为如下: 1)当VI初始运行时,升温和降温两个菜单项处于无效(Disable)状态,当用户点击启动菜单项后,这两个菜单变为使能(Enable)状态,同时启动...

    html实现好看的多种风格导航菜单(源码)

    html实现好看的多种风格导航菜单(附源码),导航菜单,源码下载,分为顶部导航菜单,悬浮按钮菜单,右键功能菜单,左侧导航菜单四种导航菜单。每种导航菜单有至少三种风格,总共23种风格,各种风格都有,代码上手简单,...

    微信小程序 圆形菜单 (源码)

    微信小程序 圆形菜单 (源码)微信小程序 圆形菜单 (源码)微信小程序 圆形菜单 (源码)微信小程序 圆形菜单 (源码)微信小程序 圆形菜单 (源码)微信小程序 圆形菜单 (源码)微信小程序 圆形菜单 (源码)微信小程序 圆形...

    12864实现菜单( 可以实现多级菜单,容易学习)

    12864 实现菜单在,单片机控制中作为人机交换中起了很大的作用,就像叫一个人用高科技的设备,但是复杂,但是做成菜单一样玩起来和手机没什么区别简单。很好用希望同志 笑纳咯 要看效果可以到我的博客看看: ///...

    VC++完美实现精美自绘菜单

    完美实现真彩自绘菜单 相当不错的源码 1、MFC框架调用的GetMenu()-&gt;MeasureItem()就相当于调用了CMenuEx::MeasureItem(),从而实现自绘菜单控件尺寸的测量。 2、MFC框架调用GetMenu()-&gt;DrawItem()就相当于调用了...

    微信小程序源码 圆形菜单(学习版)

    微信小程序源码 圆形菜单(学习版)微信小程序源码 圆形菜单(学习版)微信小程序源码 圆形菜单(学习版)微信小程序源码 圆形菜单(学习版)微信小程序源码 圆形菜单(学习版)微信小程序源码 圆形菜单(学习版)微信小程序源码...

    微信小程序 轮播图+菜单 (源码)

    微信小程序 轮播图+菜单 (源码)微信小程序 轮播图+菜单 (源码)微信小程序 轮播图+菜单 (源码)微信小程序 轮播图+菜单 (源码)微信小程序 轮播图+菜单 (源码)微信小程序 轮播图+菜单 (源码)微信小程序 轮播图+菜单 ...

    HTML竖排菜单制作

    HTML竖排菜单制作,美观的竖排菜单,制作竖排菜单时可能用得到

    菜单、后台、网页模板

    超酷的仿flash特效菜单 超漂亮的电子商务管理平台模板 橙色的CSS团购网站首页菜单模板 多风格多功能后台管理模板 淡蓝色的二级CSS导航菜单 非常大气个性的jquery下拉menu 非常大气适合QQ空间网站的CSS导航菜单...

    12864多级菜单.rar_12864菜单_51单片机菜单_51菜单_单片机菜单_菜单 51

    51单片机控制12864显示多级调试菜单

    51单片机lcd多级菜单.rar_51单片机显示_LCD多级菜单_lcd 菜单_单片机菜单_多级菜单

    51单片机液晶显示,菜单具备多级菜单,配合按键操作

    win10下_X4.X5.X6菜单.zip

    在Coreldraw 工具栏鼠标点击 右键----菜单----自定义----工作区----导入工作区---选择要导入的工作区文件 窗口,浏览-选择“win10_x4菜单.xslt”文件,例如选择工作区“WIN10下_x4.x5.x6菜单文件”文件夹下的“win10...

    st7565 驱动 + LCD多层菜单 V1.2.1

    名称:GXD LCD多层菜单 v1.2.1 作者:中国传惠 TranSmart gongxd@126.com 特点: 可以在液晶LCM上显示最大254层深度的菜单,可以非常方便的使用和移植。 字符型显示适用于St7920控制芯片。 图像显示适用于st7656控制...

    nt6启动菜单自动修复

    1、格式化或GHOST活动分区(C盘)重装系统后添加修复其它分区上的Vista/2008/Win7启动菜单 2、在Vista/2008/Win7上新装2000/xp/2003后添加修复原Vista/2008/Win7启动菜单 简化出先vista/2008/win7后装2000/xp/2003多...

    C# 向窗体的系统菜单添加菜单项

    C#向窗体的系统菜单添加菜单项C#向窗体的系统菜单添加菜单项C#向窗体的系统菜单添加菜单项C#向窗体的系统菜单添加菜单项

    Android实现上下文菜单、下拉菜单、选项菜单代码

    文档中包括Android实现上下文菜单、下拉菜单、选项菜单代码以及截图,亲测可用!!!

    JS实现360度旋转菜单.rar

    Js实现旋转导航菜单,r半径,dv偏移量,w图片宽度,x菜单横坐标,y菜单纵坐标,pn菜单图片数量,当图片旋转到圆的正面时,传入当前图片移动的横坐标,正弦值对应为负弧度,即图片旋转到圆的背面,传入当前图片移动的横...

    js 菜单js 菜单js 菜单js 菜单js 菜单

    js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js 菜单js ...

    Office2007经典菜单EXCEL&PPT;(绿色版)

    Office2007经典菜单EXCEL&PPT;(绿色版) 此版本为绿色版(推荐只使用EXCEL和PPT,world有BUG.)解压以下文件到:office安装目录(如:"C:\Program Files\Microsoft Office\Office12\ADDINS" ExcelMenu.dll PowerPointMenu...

    jsp实现级联菜单 jsp实现级联菜单

    jsp实现级联菜单jsp实现级联菜单jsp实现级联菜单jsp实现级联菜单jsp实现级联菜单

Global site tag (gtag.js) - Google Analytics