zoukankan      html  css  js  c++  java
  • Android应用开发基础篇(10)Menu(菜单)

    一、概述

         Menu,简单来理解就是当你按下手机的“menu”键时所弹出来的窗口,它被广泛应用着,几乎在每个应用中都有它的身影。


    二、要求

        用两种方式实现菜单功能。


    三、实现

         新建工程MyMenu,修改/res/layout/main.xml文件,主要是修改了里面的TextView,完整的main.xml文件如下:

     1 <?xml version="1.0" encoding="utf-8"?>
    2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    3 android:layout_width="fill_parent"
    4 android:layout_height="fill_parent"
    5 android:orientation="vertical" >
    6
    7 <TextView
    8 android:layout_width="fill_parent"
    9 android:layout_height="wrap_content"
    10 android:text="这是一个菜单测试程序"
    11 android:gravity="center_horizontal"
    12 />
    13
    14 </LinearLayout>

    接着,修改MyMenuActivity.java文件,主要是覆写了onCreateOptionsMenu()和onOptionsItemSelected()这两个方法,在onCreateOptionsMenu()方法里增加7个选项,比较简单,完整的内容如下:

     1 package com.nan.menu;
    2
    3 import android.app.Activity;
    4 import android.os.Bundle;
    5 import android.view.Menu;
    6 import android.view.MenuItem;
    7 import android.widget.Toast;
    8
    9 public class MyMenuActivity extends Activity
    10 {
    11 /** Called when the activity is first created. */
    12 @Override
    13 public void onCreate(Bundle savedInstanceState)
    14 {
    15 super.onCreate(savedInstanceState);
    16 setContentView(R.layout.main);
    17
    18 }
    19
    20 @Override
    21 //当"menu"按钮被按下时执行这个函数
    22 public boolean onCreateOptionsMenu(Menu menu)
    23 {
    24 menu.add(0, 0, Menu.NONE, "菜单").setIcon(android.R.drawable.btn_star);
    25 menu.add(0, 1, Menu.NONE, "菜单").setIcon(android.R.drawable.btn_star);
    26 menu.add(0, 2, Menu.NONE, "菜单").setIcon(android.R.drawable.btn_star);
    27 menu.add(0, 3, Menu.NONE, "菜单").setIcon(android.R.drawable.btn_star);
    28 menu.add(0, 4, Menu.NONE, "菜单").setIcon(android.R.drawable.btn_star);
    29 menu.add(0, 5, Menu.NONE, "菜单").setIcon(android.R.drawable.btn_star);
    30 menu.add(0, 6, Menu.NONE, "菜单").setIcon(android.R.drawable.btn_star);
    31
    32 return super.onCreateOptionsMenu(menu);
    33 }
    34
    35
    36 //当菜单中某项被选中时执行这个函数
    37 @Override
    38 public boolean onOptionsItemSelected(MenuItem item)
    39 {
    40 switch(item.getItemId())
    41 {
    42 case 0:displayToast("第0项被选中");break;
    43 case 1:displayToast("第1项被选中");break;
    44 case 2:displayToast("第2项被选中");break;
    45 case 3:displayToast("第3项被选中");break;
    46 case 4:displayToast("第4项被选中");break;
    47 case 5:displayToast("第5项被选中");break;
    48 case 6:displayToast("第6项被选中");break;
    49
    50 }
    51
    52 return super.onOptionsItemSelected(item);
    53 }
    54
    55 /*
    56 @Override
    57 public boolean onCreateOptionsMenu(Menu menu)
    58 {
    59 MenuInflater inflater = getMenuInflater();
    60 inflater.inflate(R.menu.menu, menu);
    61 return super.onCreateOptionsMenu(menu);
    62 }
    63
    64 @Override
    65 public boolean onOptionsItemSelected(MenuItem item)
    66 {
    67 int item_id = item.getItemId();
    68
    69 switch(item_id)
    70 {
    71 case R.id.mlist:
    72 {}
    73 }
    74 return super.onOptionsItemSelected(item);
    75 }
    76 */
    77
    78
    79
    80 //显示Toast函数
    81 private void displayToast(String s)
    82 {
    83 Toast.makeText(this, s, Toast.LENGTH_LONG).show();
    84 }
    85
    86 }

    注释那段内容后面再解释,先运行这个程序看看:

    点击"menu"按键,可以看到弹出了一个菜单窗口,如下:

    接着,随便点击一项,效果如下:

    好了。这是实现的一种方法,第二种实现方法就是把上面程序中的第55~76行的注释取消掉,然后将第19~54行加上注释,重新运行程序,OK。

    附:

         可以看到用第一种方法创建菜单最多只可以显示5项,第6项变成“more”,其他选项就在"more"里面,而第二种方法则可以用我们自己定义的布局来作为菜单选项,那么就变得灵活多了。



  • 相关阅读:
    C++ 数组array与vector的比较
    C/C++头文件区别
    C/C++ 标准输入输出重定向
    C文件读写
    输入输出重定向
    【剑指offer26 二叉搜索树与双向链表】
    【剑指offer25 复杂链表的复制】
    【剑指offer23 二叉搜索树的后序遍历序列】
    【剑指offer22 从上往下打印二叉树 & 60 把二叉树打印成多行】
    【剑指offer21 栈的压入、弹出序列】
  • 原文地址:https://www.cnblogs.com/lknlfy/p/2372101.html
Copyright © 2011-2022 走看看