`

菜单

 
阅读更多
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);
}
}











点击其中一项:





分享到:
评论

相关推荐

    网吧游戏菜单 游戏菜单 家用游戏菜单

    【标题】:“网吧游戏菜单 游戏菜单 家用游戏菜单” 在当今的数字娱乐领域,网吧游戏菜单和家用游戏菜单扮演着至关重要的角色。它们是玩家与游戏库之间的桥梁,提供了一个用户友好的界面来浏览、选择和启动各种游戏...

    Qt实现的PC端环形菜单、悬浮球菜单、动画菜单、高级菜单

    在本文中,我们将深入探讨如何使用Qt框架来实现各种创新的菜单设计,包括环形菜单、悬浮球菜单和动画菜单。这些高级菜单设计为用户界面增添了互动性和视觉吸引力,是现代应用程序中提升用户体验的重要元素。 首先,...

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

    在这个“51单片机lcd多级菜单.rar”压缩包中,包含了关于如何在51单片机上实现LCD(液晶显示屏)多级菜单的资源,这对于设计交互式用户界面非常关键。下面将详细解释这一技术的核心知识点。 首先,我们需要理解51...

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

    Android 实现上下文菜单、下拉菜单、选项菜单代码详解 Android 中的菜单系统是一个非常重要的组件,它提供了多种方式来帮助用户与应用程序进行交互。在本文档中,我们将详细介绍如何实现上下文菜单、下拉菜单和选项...

    VC 菜单制作实例(动态创建菜单、建立带图标的菜单)

    2. 添加顶级菜单项:调用`AppendMenu()`或`InsertMenu()`,传入菜单句柄、菜单类型(如MF_STRING表示文本菜单项)、菜单ID和菜单文本。 3. 添加子菜单项:如果需要创建子菜单,可以使用`AppendMenu()`,设置MF_POPUP...

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

    在C#编程中,Windows Forms应用常常需要自定义窗口的操作,比如向系统菜单(也称为控制菜单或标题栏菜单)中添加额外的菜单项。这可以让用户更容易地访问应用程序特定的功能,而无需打开单独的菜单或者工具栏。下面...

    VB导航菜单 仿QQ菜单

    VB导航菜单 仿QQ菜单是一种在Visual Basic (VB)开发环境中创建类似QQ应用程序的垂直折叠式菜单的控件。这个控件的设计目的是提供一个简单、直观且可自定义的方式来构建用户界面,使得开发者能够轻松地为应用程序添加...

    MFC对话框动态添加右键快捷菜单-多级菜单

    在对话框中实现右键快捷菜单,尤其是多级菜单,可以增强用户交互体验,使得功能调用更为便捷。下面将详细阐述如何在MFC对话框中动态添加右键快捷菜单,并实现多级结构。 首先,我们需要了解MFC中的菜单系统。MFC将...

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

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

    Labview 设置菜单栏

    在Labview中,菜单栏位于窗口的顶部,包含了如“文件”、“编辑”、“查看”等标准菜单项,每个菜单项下又可能有多个子菜单。这些菜单项对应着程序的不同功能,点击它们可以触发相应的操作。 设置Labview菜单栏的...

    axure rp9.0 左联菜单功能框架

    1、界面描述:分为左侧菜单功能区,右侧为上方是打开菜单区,下方是打开的功能显示区。 2、使用介绍: 左侧菜单使用中继器进行菜单的动态加载,菜单分两级,可建立多个菜单。在多个菜单进行功能切换时,自动实现菜单...

    链表实现多级菜单

    在本文中,我们将深入探讨如何使用链表来实现多级菜单系统,特别是在单片机环境中的应用。链表作为一种高效的数据结构,对于动态构建和管理菜单具有显著的优势,尤其是在内存有限的环境中。 首先,让我们理解链表的...

    Delphi Edit右键系统菜单加自定义菜单项

    "Delphi Edit右键系统菜单加自定义菜单项" 是一个典型的增强用户界面交互的例子。在这个话题中,我们将深入探讨如何在Delphi中的TEdit控件上添加自定义的右键菜单,同时保持原有的系统菜单功能。 首先,我们要理解...

    京东左侧商品分类菜单JS弹出式菜单

    京东左侧商品分类菜单就是一个典型的实例,它采用JavaScript(JS)技术实现了一个高效的、弹出式的导航菜单。这种菜单设计旨在为用户提供方便快捷的商品浏览方式,同时优化网站的可用性。本文将深入探讨这个菜单的...

    头部超级菜单导航-鼠标放上去显示二级菜单

    在网页设计中,头部超级菜单导航是一种常见的交互模式,它能有效地组织大量链接,提高用户在网站中的导航效率。这种设计通常应用于大型网站或电子商务平台,以提供清晰、直观的层级结构,帮助用户快速找到所需信息。...

    labview菜单响应设计

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

    顶级菜单和右键自绘菜单的混合

    在Windows应用程序开发中,设计用户友好的交互界面是至关重要的,而菜单系统是其中不可或缺的一部分。本主题将深入探讨如何实现“顶级菜单和右键自绘菜单的混合”,这是一个高级的UI技术,允许开发者创建更加个性化...

    js树形菜单加右键菜单

    在IT行业中,树形菜单和右键菜单是两种常见的用户界面元素,它们为用户提供了一种组织和交互数据的有效方式。本文将深入探讨这两种菜单的概念、实现原理以及它们在实际项目中的应用,特别是如何在JavaScript环境下...

    js右键菜单,菜单项由js动态添加,纯js调用

    本文将深入探讨如何使用JavaScript实现右键菜单,特别是如何动态添加菜单项,并在菜单项中添加图标、文本以及处理点击事件。此外,我们还将讨论在不同浏览器(如IE、Firefox和Chrome)中的兼容性问题。 首先,右键...

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

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

Global site tag (gtag.js) - Google Analytics