7.16.Menu(菜单组件)

在一个菜单之中最多只会显示2排3列的菜单项,如果现在的菜单项超出了6,则超出部分会自动的隐藏,而且会自动出现一个“更多”的菜单项提示用户。
在Android中,菜单一共分为三类:选项菜单(OptionMenu)、上下文菜单(ContextMenu)和子菜单(SubMenu)

7.16.1 选项菜单(OptionsMenu)

范例一:通过程序生成选项菜单
配置:
| <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/MyLayout" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/txt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="按下Menu键出现选项菜单"/> </LinearLayout>
|
Activity:
| package com.makyan.demo; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; public class OperationsMenuActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.activity_operations_menu); } @Override public boolean onCreateOptionsMenu(Menu menu) { // 显示菜单 menu.add(Menu.NONE, // 菜单不分组 Menu.FIRST + 1, // 菜单项ID 1, // 菜单编号 "删除") // 显示标题 .setIcon(android.R.drawable.ic_menu_delete); // 设置图标 menu.add(Menu.NONE, Menu.FIRST + 2, 2, "保存").setIcon( android.R.drawable.ic_menu_save); // 设置菜单项 menu.add(Menu.NONE, Menu.FIRST + 3, 3, "帮助").setIcon( android.R.drawable.ic_menu_help); // 设置菜单项 menu.add(Menu.NONE, Menu.FIRST + 4, 4, "添加").setIcon( android.R.drawable.ic_menu_add); // 设置菜单项 menu.add(Menu.NONE, Menu.FIRST + 5, 5, "详细").setIcon( android.R.drawable.ic_menu_info_details); // 设置菜单项 menu.add(Menu.NONE, Menu.FIRST + 6, 6, "发送").setIcon( android.R.drawable.ic_menu_send); // 设置菜单项 menu.add(Menu.NONE, Menu.FIRST + 7, 7, "编辑").setIcon( android.R.drawable.ic_menu_edit); // 设置菜单项 return true; // 菜单显示 } @Override public boolean onOptionsItemSelected(MenuItem item) { // 选中某个菜单项 switch (item.getItemId()) { // 判断菜单项ID case Menu.FIRST + 1: Toast.makeText(this, "您选择的是“删除菜单”项。", Toast.LENGTH_LONG).show(); break; case Menu.FIRST + 2: Toast.makeText(this, "您选择的是“保存菜单”项。", Toast.LENGTH_LONG).show(); break; case Menu.FIRST + 3: Toast.makeText(this, "您选择的是“帮助菜单”项。", Toast.LENGTH_LONG).show(); break; case Menu.FIRST + 4: Toast.makeText(this, "您选择的是“添加菜单”项。", Toast.LENGTH_LONG).show(); break; case Menu.FIRST + 5: Toast.makeText(this, "您选择的是“详细菜单”项。", Toast.LENGTH_LONG).show(); break; case Menu.FIRST + 6: Toast.makeText(this, "您选择的是“发送菜单”项。", Toast.LENGTH_LONG).show(); break; case Menu.FIRST + 7: Toast.makeText(this, "您选择的是“设置菜单”项。", Toast.LENGTH_LONG).show(); break; } return false; } @Override public void onOptionsMenuClosed(Menu menu) { // 菜单退出时调用 Toast.makeText(this, "选项菜单关闭了", Toast.LENGTH_LONG).show(); } @Override public boolean onPrepareOptionsMenu(Menu menu) { // 菜单显示前调用 Toast.makeText(this, "在菜单显示(onCreateOptionsMenu()方法)之前会调用此操作,可以在此操作之中完成一些预处理操作。",Toast.LENGTH_LONG).show(); return true; // 调用onCreateOptionsMenu() } }
|
onPrepareOptionsMenu(Menu menu)在创建菜单前操作,
onOptionsMenuClosed(Menu menu)在关闭菜单后操作
演示效果:

范例二:通过配置生成选项菜单
在创建菜单时,可以使用MenuInflater来获取配置文件填充菜单
| getMenuInflater().inflate(R.menu.operations_menu, menu); |
配置:
| <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/MyLayout" android:orienta |

本文详细介绍了Android中的菜单组件,包括选项菜单(OptionsMenu)、上下文菜单(ContextMenu)和子菜单(SubMenu)。通过示例展示了如何通过程序生成和配置文件填充菜单,以及如何使用MenuInflater。同时,提到了长按触发上下文菜单和子菜单的创建方法。
最低0.47元/天 解锁文章
2848

被折叠的 条评论
为什么被折叠?



