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) { // 菜单显示前调用 |