`
ze_nana
  • 浏览: 52284 次
社区版块
存档分类
最新评论

(九)菜单

 
阅读更多

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的排序

<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资源。

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操作。

 

 

 

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代码创建:

 

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造成后面很多错误。

 

 

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);
	}
}

 

 

 

 



 点击其中一项:



 

  • 大小: 8.2 KB
  • 大小: 7.4 KB
  • 大小: 8.3 KB
  • 大小: 5.5 KB
  • 大小: 5.4 KB
  • 大小: 4.8 KB
  • 大小: 9.5 KB
  • 大小: 7.7 KB
分享到:
评论

相关推荐

    j2me中简单实现九宫格菜单

    在Java ME(J2ME)平台上,开发人员经常需要创建用户友好的界面,其中九宫格菜单是一个常见的设计模式。这种菜单布局将多个功能项排列成3x3的矩阵,提供直观的操作方式。本篇文章将深入探讨如何在J2ME环境中实现一个...

    J2ME界面用的九宫格菜单

    标题中的"J2ME界面用的九宫格菜单"指的是在J2ME环境中实现的一种用户界面设计,它采用九个单元格组成的网格布局,为用户提供直观、简洁的操作方式,常用于展示多个功能选项或快捷方式,类似如今手机上的应用抽屉。...

    android九宫图菜单界面

    九宫格菜单,通常由3行3列的图标组成,是一种常见于手机应用中的展示方式,它可以有效地展示多个功能选项,同时保持简洁的视觉效果。这种设计模式在许多Android应用中被广泛使用,例如设置菜单、应用启动页或者个性...

    css九宫格菜单

    九宫格菜单通常包含九个单元格,每个单元格代表一个菜单项,常用于展示网站的主要功能或分类。 创建九宫格菜单的核心在于利用CSS布局技术,如网格系统、Flexbox或Grid布局。以下是一些关键知识点: 1. **CSS Grid...

    mtk 宫格菜单 九宫格

    从给定的文件信息来看,我们正在探讨的是与MTK平台相关的编程代码,具体涉及到“宫格菜单”或称为“九宫格菜单”的实现。在移动设备开发领域,特别是基于MTK芯片组的手机和平板电脑,宫格菜单是一种常见的用户界面...

    ios-下拉九宫格样式菜单.zip

    本项目"ios-下拉九宫格样式菜单.zip"就是一个专门实现这种效果的开源库,名为MoreDropDownMenu,它是对DOPDropDownMenu-Enhanced的进一步改进。这个库为应用添加了一个具有九宫格布局的下拉菜单,可以方便地展示多个...

    jquery九宫格布局点击弹出菜单九宫格布局效果代码

    本篇文章将详细讲解如何利用jQuery实现一个九宫格布局,并在点击时弹出菜单的特效。 一、jQuery九宫格布局 九宫格布局是一种常见的网页设计模式,它将内容均匀地分布在一个3x3的网格中。在HTML中,我们可以创建一个...

    iOS 九宫格菜单 NAMenu.zip

    iOS 九宫格菜单 NAMenu ,NAMenu 是一个非常简单的 grid 菜单,实现了类似九宫格的导航菜单效果。

    android用GridView实现九宫格菜单

    在Android开发中,GridView是一种非常常用的布局控件,它能够以网格的形式展示数据,非常适合用来实现九宫格菜单。九宫格菜单通常用于应用程序的主界面,显示一系列图标和文字,用户点击图标即可进入相应的功能模块...

    html5九宫格布局的网格菜单效果.zip

    HTML5九宫格布局的网格菜单效果是一种现代网页设计中常见的交互式元素,它结合了HTML5的新特性、CSS3的样式以及JavaScript的动态效果,为用户提供了丰富的视觉体验和友好的交互操作。这种布局模式通常用于展示产品、...

    j2me canvas九宫图 菜单

    "九宫图"通常是指一种布局模式,它将屏幕划分为九个等大小的区域,常用于展示信息或导航。而"菜单"则是用户界面中的一个重要组成部分,用于提供操作选项。 Canvas是J2ME MIDP(Mobile Information Device Profile)...

    jQuery九宫格菜单 菜单可点击悬浮展开

    总结起来,实现“jQuery九宫格菜单 菜单可点击悬浮展开”涉及的关键技术包括jQuery的选择器和事件处理、CSS的网格布局以及动态效果的添加。通过熟练掌握这些技能,开发者可以创建出富有交互性的前端界面,提升用户在...

    悬浮九宫格菜单jQuery插件.zip

    【悬浮九宫格菜单jQuery插件】是一种专为移动端网站设计的小巧且高效的导航解决方案。在当前移动设备屏幕寸土寸金的时代,合理利用空间、提供直观易用的导航至关重要。这款插件通过将菜单项以九宫格的形式排列,既...

    iOS swift写的九宫格菜单demo

    本示例中的“iOS swift写的九宫格菜单demo”是一个基于Swift实现的交互式菜单控件,旨在帮助开发者轻松创建具有自定义功能的九宫格布局。下面将详细解析这个demo所涉及的知识点: 1. **Swift语言基础**:了解Swift...

    第九章菜单与酒单筹划PPT课件.ppt

    第九章菜单与酒单筹划PPT课件.ppt

    第九章 菜单设计的应用.docx

    第九章主要讨论的是菜单设计在Visual Foxpro (VFP)中的应用。VFP支持两种类型的菜单,即条形菜单和弹出式菜单。菜单结构包括内部名字和一系列菜单选项,每个菜单项都有名称和选项序号,用于在代码中进行引用。菜单项...

    Android 按Menu弹出菜单

    这种九宫格样式的菜单设计,借鉴了QQ等流行社交应用的界面元素,为用户提供了一种直观且易于操作的方式去访问各种功能。 **1. 创建Menu资源** 首先,我们需要在项目的res/menu目录下创建一个XML文件,例如`menu.xml...

    ios-简单九宫格布局-分享菜单页面展示.zip

    简单的一个分享菜单展示界面,可以随意扩展,随意更改使用,后面有空会新增UICollectionView等版本 可以作为messenger,whatsapp,email,微博,微信,朋友圈等分享功能的界面入口。 第一个版本是九宫格布局的版本。...

    WeLoveMusic.rar

    "九宫菜单"是应用的核心功能之一,这种布局方式简洁明了,用户可以轻松地在九个不同的选项之间切换。在编程实现上,开发者可能使用了GridView或者RecyclerView等布局控件来实现这个功能。每个单元格内的交互设计,...

Global site tag (gtag.js) - Google Analytics