Android menu的使用方法

来源:互联网 发布:湖北麻将源码 编辑:程序博客网 时间:2024/06/06 17:59

1. 概述

本文谈谈Android系统中菜单的使用方法。


1.1 主要内容

基本思想:

  • 和所有的UI思想一样,Android的菜单(Menu)是由菜单项(Menu Item)组成的。
  • 菜单包括通常的菜单的概念和弹出式菜单(Popup Menu)(也称上下文菜单,Context Menu);——前者是指按了某个按钮之后,弹出来的那种菜单;后者是右键某个界面的时候弹出来的菜单。在Android系统中,也支持鼠标右键的设备;其他情形,就是在某个View中长按,然后会弹出来上下文菜单。
  • Android另外有个Menu Actions的概念,或成Action Menu,或简称Action。这个是出现在屏幕最上面或下面的Action Bar上面的menu item。


1.2 参考资料

安装ADT之后,可以把Android SDK的docs下载到本地,方便查看。解决被墙的时候无法上Android官网的问题。


本文描述的Menu对应如下位置:

  • Menu Topic: /sdk/docs/guide/topics/ui/menus.html
  • Menu API: /sdk/docs/reference/android/view/Menu.html
  • Menu Item API: /sdk/docs/reference/android/view/MenuItem.html

2. Android向导生成的菜单

现在看看Android向导为我们生成的缺省project中的菜单信息。

2.1 菜单资源文件

对应res\menu\main.xml,其内容如下:

<menu xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    tools:context="com.example.hellomenus.MainActivity" >    <item        android:id="@+id/action_settings"        android:orderInCategory="100"        android:showAsAction="never"        android:title="@string/action_settings"/></menu>

整个xml对应一个菜单,其中的每一个item就对应一个menu item。


2.2 初始化菜单

应用在初始化的时候,会调用onCreateOptionsMenu()来创建菜单:

@Overridepublic boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.    getMenuInflater().inflate(R.menu.main, menu);    return true;}
这里直接从前面提到的res\menu\main.xml生成菜单。


2.3 处理菜单选择事件

这是在onOptionsItemSelected()方法中处理的,如下:

@Overridepublic boolean onOptionsItemSelected(MenuItem item) {    // Handle action bar item clicks here. The action bar will    // automatically handle clicks on the Home/Up button, so long    // as you specify a parent activity in AndroidManifest.xml.    int id = item.getItemId();    if (id == R.id.action_settings) {        return true;    }    return super.onOptionsItemSelected(item);}

这里的menu item的id就是main.xml中定义的。


2.4 效果

Android手机有3个键:Back、Home、Menu。当按了Menu之后,就会弹出菜单项,如下:



3. 一些细节

3.1 menu item的一些属性





0 0