菜单是用户界面中最常见的元素之一,使用非常频繁,在Android中,菜单被分为如下三种,选项菜单(OptionsMenu)、上下文菜单(ContextMenu)和子菜单(SubMenu)。
菜单的实现方式有2种:一种是通过布局文件xml生成菜单,另一种是通过代码生成。
三种菜单内容有点多,不过大体相似,一次性讲完吧,本人偏好代码动态生成,下面就以代码为例。
1、选项菜单(OptionsMenu)
先来看下选项菜单的效果图:
在一个Activity界面中点击手机Menu键,在屏幕下方弹出的菜单就叫选项菜单(OptionsMenu)。
创建一个选项菜单的步骤:
1、覆写Activity的onCreateOptionsMenu(Menu menu)函数
2、调用menu的add()方法添加菜单项(MenuItem),可以调用MenuItem的setIcon()方法来为菜单设置图标
3、当菜单项()被选择时,我们可以通过覆盖Activity的onOptionsItemSeleted()方法来响应事件
先来了解下主要的方法:
1 public boolean onCreateOptionsMenu(Menu menu)://使用此方法调用OptionsMenu 。 2 3 public boolean onOptionsItemSelected(MenuItem item)://选中菜单项后发生的动作。 4 5 public void onOptionsMenuClosed(Menu menu): //菜单关闭后发生的动作。 6 7 public boolean onPrepareOptionsMenu(Menu menu)://选项菜单显示之前onPrepareOptionsMenu方法会被调用,你可以用此方法来根据打当时的情况调整菜单。 8 9 public boolean onMenuOpened(int featureId, Menu menu)://单打开后发生的动作。
下面来看个小Demo,注释很全。
1 package com.example.menutest; 2 3 import android.app.Activity; 4 import android.content.Intent; 5 import android.os.Bundle; 6 import android.view.Menu; 7 import android.view.MenuItem; 8 import android.widget.Toast; 9 10 /** 11 * 12 * @author Balla_兔子 13 * 用代码动态生成菜单(选项菜单) 14 * 15 */ 16 public class MainActivity extends Activity { 17 18 @Override 19 protected void onCreate(Bundle savedInstanceState) { 20 super.onCreate(savedInstanceState); 21 setContentView(R.layout.activity_main); 22 } 23 24 @Override 25 //onCreateOptionsMenu()此方法只会调用一次,即第一次显示的时候会调用. 26 public boolean onCreateOptionsMenu(Menu menu) { 27 //