`
1140566087
  • 浏览: 559126 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
博客专栏
2c4ae07c-10c2-3bb0-a106-d91fe0a10f37
c/c++ 入门笔记
浏览量:18530
3161ba8d-c410-3ef9-871c-3e48524c5263
Android 学习笔记
浏览量:314097
Group-logo
J2ME 基础学习课程集
浏览量:18737
A98a97d4-eb03-3faf-af96-c7c28f709feb
Spring 学习过程记录...
浏览量:17581
社区版块
存档分类
最新评论

Android 之 上下文菜单、选项菜单、子菜单

阅读更多
菜单

OptionMenu ContextMenu SubMenu;


1、选项菜单:OptionMenu

注意:一般的选项菜单:最多可以有两行,每行3个菜单项,当多余 6 个的时候或出现more,点击显示;
创建:重写 onCreateOptionsMenu() 方法;
事件:重写onOptionsItemSelected(); 方法

2、上下文菜单:ContextMenu
说明:选项菜单服务于Activity,上下文菜单是注册到某一个View对象上;
提示:可以为ContextMenu指定标题和图标,但菜单选项不能附带图标;
创建:重写onCreateContextMenu();
事件:重写onContextItemSelected();
注册:registerForContextMenu();

3、子菜单:SubMenu
说明:子菜单不能嵌套子菜单,即android中菜单只有两层;
提示:子菜单项不支持显示图标
创建:使用addSubMenu(); 添加具有子菜单的菜单项




事例:代码中实现各种菜单

package com.example.menu;

import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.Toast;

public class MainActivity extends Activity {

	private RelativeLayout myLayout; // 声明布局属性

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		myLayout = (RelativeLayout) findViewById(R.id.myLayout); // 获取对象
		registerForContextMenu(myLayout); // 注册上下文菜单

	}

	/*********************************** 选项菜单 Start OptionMenu ************************************************/

	// 选项菜单的实现
	public boolean onCreateOptionsMenu(Menu menu) {

		/*
		 * 参数说明: 1:组标识 2:菜单项ID ,唯一标识 3: 菜单项摆放的顺序 4:菜单上显示的文字
		 */
		MenuItem addMenuItem = menu.add(1, 0, 0, "添加"); // 添加菜单项
		addMenuItem.setIcon(R.drawable.icon_download2); // 设置图标
		MenuItem uppMenuItem = menu.add(1, 1, 1, "修改");
		uppMenuItem.setIcon(R.drawable.icon_download2);

		/* 子菜单实现 */
		SubMenu delSubMenu = menu.addSubMenu(1, 1, 1, "删除"); // 给menu添加子菜单
		delSubMenu.setHeaderIcon(R.drawable.icon_download2); // 设置子菜单单出框图标
		delSubMenu.setHeaderTitle("删除");
		delSubMenu.setIcon(R.drawable.icon_download2); // 创建子菜单的图标
		delSubMenu.add(2, 11, 11, "直接"); // 为子菜单添加二级菜单
		delSubMenu.add(2, 12, 12, "间接");

		SubMenu showSubMenu = menu.addSubMenu(1, 2, 2, "显示"); // 添加子菜单
		showSubMenu.setIcon(R.drawable.icon_download2); // 设置子菜单图标
		showSubMenu.setHeaderIcon(R.drawable.icon_download2); // 设置弹出框图标
		showSubMenu.setHeaderTitle("显示"); // 设置弹出框标题
		showSubMenu.add(2, 21, 21, "全显");
		showSubMenu.add(2, 21, 22, "慢显");

		return true;
	}

	// 选项菜单选择事件
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case 0:
			Toast.makeText(MainActivity.this, "选中了" + item.getTitle() + "菜单",
					Toast.LENGTH_LONG).show();
			break;

		case 1:
			Toast.makeText(MainActivity.this, "选中了" + item.getTitle() + "菜单",
					Toast.LENGTH_LONG).show();
			break;
		default:
			Toast.makeText(MainActivity.this, "选中了" + item.getTitle() + "菜单",
					Toast.LENGTH_LONG).show();
			break;
		}
		return super.onOptionsItemSelected(item);
	}

	/**
	 * 选项菜单被关闭时触发该方法: 1、back 按钮被点击 2、menu 按钮再次按下 3、选择了某一个菜单项
	 */
	public void onOptionsMenuClosed(Menu menu) {
		super.onOptionsMenuClosed(menu);
		Toast.makeText(MainActivity.this, "选项菜单被关闭了...", Toast.LENGTH_LONG)
				.show();
	}

	/**
	 * 选项菜单显示之前调用
	 * 
	 * @return false :此方法把menu点击的动作屏蔽了,onCreateOptionsMenu 方法不会调用
	 */
	public boolean onPrepareOptionsMenu(Menu menu) {
		Toast.makeText(MainActivity.this, "onPrepaareOptionsMenu()方法被调用...",
				Toast.LENGTH_LONG).show();
		return super.onPrepareOptionsMenu(menu);
	}

	/***************************************** End OptionMenu **************************************************************/

	/***************************************** 上下文菜单 Start ContextMenu **************************************************/

	// 创建上下文菜单
	public void onCreateContextMenu(ContextMenu menu, View v,
			ContextMenuInfo menuInfo) {
		super.onCreateContextMenu(menu, v, menuInfo);
		menu.setHeaderIcon(R.drawable.icon_download2); // 设置上下文菜单标题的图标
		menu.setHeaderTitle("设置背景颜色"); // 设置上下文菜单的标题
		MenuItem oneMenuItem = menu.add(Menu.NONE, 0, 0, "红色"); // 添加菜单项 一
		MenuItem twoMenuItem = menu.add(Menu.NONE, 1, 1, "黑色"); // 添加菜单项 二

	}

	// 上下文菜单选择事件
	public boolean onContextItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case 0:
			Toast.makeText(MainActivity.this, "选择了" + item.getTitle() + "菜单",
					Toast.LENGTH_LONG).show();
			myLayout.setBackgroundColor(getResources().getColor(R.color.back)); // 设置颜色
			break;

		case 1:
			Toast.makeText(MainActivity.this, "选择了" + item.getTitle() + "菜单",
					Toast.LENGTH_LONG).show();
			myLayout.setBackgroundColor(getResources().getColor(R.color.red));// 设置颜色
			break;
		}
		return super.onContextItemSelected(item);
	}

	// 上下文菜单关闭时调用..
	public void onContextMenuClosed(Menu menu) {
		super.onContextMenuClosed(menu);
		Toast.makeText(MainActivity.this, "上下文菜单关闭...", Toast.LENGTH_LONG)
				.show();
	}

	/***************************************** End ContextMenu ***********************************************************/

	/***************************************** 子菜单 Start SubMenu ********************************************************/
	// 结合选项菜单或者上下文菜单使用,本次结合上选项菜单实现子菜单....
	/***************************************** End SubMenu ****************************************************************/

}














分享到:
评论

相关推荐

    菜单 选项菜单 子菜单 上下文菜单

    本案例深入探讨了菜单的三种主要类型:普通菜单(Option Menu)、子菜单(Submenu)以及上下文菜单(Context Menu)。下面将详细阐述这三种菜单的使用方法、特点及其实现代码。 1. 普通菜单(Option Menu) 普通菜单通常...

    菜单,包括选项菜单,子菜单,上下文菜单

    总的来说,选项菜单、子菜单和上下文菜单是Android开发中实现用户交互的重要手段。理解并熟练运用这三种菜单,能帮助开发者构建出更加直观、易用的应用界面,提升用户体验。通过深入学习和实践,开发者可以灵活地为...

    Android的子菜单

    我试了还是什么,因为我了解到,有就是一个子菜单,除了上下文菜单,当你学习Android的工程师资格认证考试的选项菜单。 下面是样本的源代码。 这是因为菜单的简单的ID如果您单击菜单上只显示在LogCat中。

    Android 系统菜单与自定义菜单

    首先,Android中的系统菜单主要分为三种类型:选项菜单(Option Menu)、上下文菜单(Context Menu)和弹出式菜单(Popup Menu)。选项菜单通常在屏幕顶部显示,当用户点击设备上的菜单键时出现;上下文菜单则在长按...

    android开发中常用的3中菜单

    下面将详细讲解Android开发中常见的三种菜单:选项菜单、子菜单以及上下文菜单。 1. 选项菜单(Option Menu) 选项菜单是最常见的一种菜单类型,通常出现在屏幕的右上角或者在屏幕顶部的状态栏中,当用户点击菜单...

    Android选项菜单用法实例分析

    首先,Android中的菜单大致分为三种类型:选项菜单、上下文菜单和子菜单。选项菜单是在Activity运行时,用户按下Menu键后显示的菜单,而上下文菜单则是在用户长按某个视图元素时出现。子菜单则是选项菜单中的嵌套...

    android 界面超炫菜单效果

    Android提供了多种菜单类型,包括选项菜单(Option Menu)、上下文菜单(Context Menu)和子菜单(Submenu)。选项菜单通常出现在屏幕顶部的三个点(汉堡菜单)中,而上下文菜单则在长按某项内容时显示。要创建这些...

    Android菜单文件大全

    本资源"Android菜单文件大全"全面介绍了如何在Android系统中创建和管理各种类型的菜单,包括代码生成、XML配置文件生成、上下文菜单以及子菜单的实现。 首先,Android中的菜单主要分为两种生成方式:代码动态生成和...

    Android菜单定制总结

    Android中的菜单主要分为三种类型:选项菜单(OptionsMenu)、上下文菜单(ContextMenu)和弹出式菜单(PopupMenu)。选项菜单通常在动作栏(ActionBar)上显示,上下文菜单则在长按时触发,而弹出式菜单则在需要时...

    Android菜单(Menu)小结

    菜单是用户界面中最常见的元素之一,使用非常频繁,在Android中,菜单被分为如下三种,选项菜单(OptionsMenu)、上下文菜单(ContextMenu)和子菜单(SubMenu).参考博客:...

    android平台下各种菜单的实现

    本文将深入探讨Android中的各种菜单类型,包括上下文菜单(Context Menu)、选项菜单(Options Menu)以及它们的实现方法。 1. **选项菜单(Options Menu)** 选项菜单通常在屏幕顶部显示,当用户点击设备的菜单按钮或在...

    Android二级菜单

    在Android中,菜单主要分为三种类型:选项菜单(Option Menu)、上下文菜单(Context Menu)和弹出窗口菜单(PopupMenu)。选项菜单是最常见的一种,它在屏幕顶部显示,通常在按下设备的菜单键时出现。而上下文菜单...

    android 菜单演示

    本教程将通过"android 菜单演示"项目,详细解析如何在Android中创建和使用菜单,包括选项菜单(Option Menu)、上下文菜单(Context Menu)和子菜单(Submenu)。 1. 选项菜单(Option Menu) 选项菜单通常显示在...

    Android应用源码之游戏菜单进度条.zip

    在Android开发中,菜单通常由`Menu`类来创建和管理,它允许开发者在应用程序的不同阶段(如选项菜单、上下文菜单或子菜单)展示用户操作。`Menu`对象可以通过`onCreateOptionsMenu()`或`onPrepareOptionsMenu()`方法...

    android 自定义菜单

    在Android中,菜单通常在三种场景下出现:选项菜单(Option Menu)、上下文菜单(Context Menu)和弹出菜单(PopupMenu)。选项菜单通常在屏幕顶部的三个点(或更多点)按钮中显示,而上下文菜单则在长按某个项目时...

    Android初级入门——菜单Menu的简单使用

    菜单可以分为几种类型:选项菜单(Option Menu),上下文菜单(Context Menu),弹出窗口(Popup Menu)和子菜单(Sub Menu)。 **1. 选项菜单(Option Menu)** 选项菜单是最常见的菜单类型,它在动作栏中显示。创建选项...

    android多级菜单列表设计例程

    菜单可以在不同的场景下使用,如选项菜单(Option Menu)、上下文菜单(Context Menu)或子菜单(Submenu)。在多级菜单中,子菜单是菜单项下的一个嵌套菜单,可以递归地创建多级结构。 1. **菜单创建**: - 在XML...

    Android菜单详解

    不过,子菜单项、上下文菜单项和扩展菜单项都不能显示图标。 5. **选择菜单(Alternative Menu)**:这种菜单用得较少,本文未作详细介绍。 6. **扩展菜单(Overflow Menu)**:当选项菜单的菜单项超过6个时,第6...

Global site tag (gtag.js) - Google Analytics