android menu

 

android的菜单有三种:
Options Menu
  当用户按下menu button按钮时显示的菜单
Context Menu
  当用户长久按住屏幕,即被注册显示上下文菜单的视图时显示的菜单
Submenu
  当用户按下一个菜单的某个选项时弹出的子菜单

By default, every Activity supports an options menu of actions or options. You can add items to this menu and handle clicks on your additions. The easiest way of adding menu items is inflating an XML file into the Menu via MenuInflater. The easiest way of attaching code to clicks is via onOptionsItemSelected(MenuItem) and onContextItemSelected(MenuItem).

第一步:编写main.xml文件

View Code
 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 android:id="@+id/TextView01"
8 android:layout_width="fill_parent"
9 android:layout_height="wrap_content"
10 android:text="@string/hello" />
11
12 </LinearLayout>

第二步:编写layoutmenu01.java文件

View Code
 1 package cn.edu.zwu.tel;
2
3 import android.app.Activity;
4 import android.graphics.Color;
5 import android.os.Bundle;
6 import android.view.ContextMenu;
7 import android.view.Menu;
8 import android.view.MenuItem;
9 import android.view.View;
10 import android.view.ContextMenu.ContextMenuInfo;
11 import android.widget.TextView;
12
13 public class LayoutMenu01Activity extends Activity {
14 private static final int ITME1 = Menu.FIRST;
15 private static final int ITME2 = Menu.FIRST+1;
16 private static final int ITME3 = Menu.FIRST+2;
17 private TextView myTV;
18
19 public void onCreate(Bundle savedInstanceState)
20 {
21 super.onCreate(savedInstanceState);
22 setContentView(R.layout.main);
23 myTV = (TextView)findViewById(R.id.TextView01);
24 registerForContextMenu(myTV);
25 }
26 //ContextMenu当用户长久按住屏幕,即被注册显示上下文菜单的视图时显示的菜单
27 @Override
28 public void onCreateContextMenu(ContextMenu menu, View v,
29 ContextMenuInfo menuInfo) {
30 menu.add(0, ITME1, 0, "红色背景");
31 menu.add(0, ITME2, 0, "绿色背景");
32 menu.add(0, ITME3, 0, "白色背景");
33 }
34 //选择
35 @Override
36 public boolean onContextItemSelected(MenuItem item) {
37 switch (item.getItemId()) {
38 case ITME1:
39 myTV.setBackgroundColor(Color.RED);
40 break;
41 case ITME2:
42 myTV.setBackgroundColor(Color.GREEN);
43 break;
44 case ITME3:
45 myTV.setBackgroundColor(Color.WHITE);
46 break;
47 }
48 return true;
49 }
50 }

效果图:

android menu

还有一种写法:main.xml文件没变,

View Code
 1 package cn.edu.zwu.tel;
2
3 import android.app.Activity;
4 import android.os.Bundle;
5 import android.view.ContextMenu;
6 import android.view.MenuInflater;
7 import android.view.MenuItem;
8 import android.view.View;
9 import android.view.ContextMenu.ContextMenuInfo;
10 import android.widget.TextView;
11
12 public class LayoutMenu02Activity extends Activity {
13 /** Called when the activity is first created. */
14 TextView LabelView = null;
15 @Override
16 public void onCreate(Bundle savedInstanceState)
17 {
18 super.onCreate(savedInstanceState);
19 setContentView(R.layout.main);
20 LabelView = (TextView)findViewById(R.id.label);
21 registerForContextMenu(LabelView);
22 }
23 //ContextMenu当用户长久按住屏幕,即被注册显示上下文菜单的视图时显示的菜单
24 @Override
25 public void onCreateContextMenu(ContextMenu menu,
26 View v, ContextMenuInfo menuInfo)
27 {
28
29 MenuInflater inflater = getMenuInflater();
30 inflater.inflate(R.menu.context_menu, menu);
31 }
32
33 @Override
34 public boolean onContextItemSelected(MenuItem item)
35 {
36 switch(item.getItemId()){
37 case R.id.contextMenu1:
38 LabelView.setText("菜单子项1");
39 return true;
40 case R.id.contextMenu2:
41 LabelView.setText("菜单子项2");
42 return true;
43 case R.id.contextMenu3:
44 LabelView.setText("菜单子项3");
45 return true;
46 }
47 return false;
48 }
49
50 }

 

还有的是用Options Menu的方法实现:

主要代码是

View Code
 1     /*创建menu*/
2 public boolean onCreateOptionsMenu(Menu menu)
3 {
4 MenuInflater inflater = getMenuInflater();
5 //设置menu界面为res/menu/menu.xml
6 inflater.inflate(R.menu.menu, menu);
7 return true;
8 }
9
10 /*处理菜单事件*/
11 public boolean onOptionsItemSelected(MenuItem item)
12 {
13 //得到当前选中的MenuItem的ID,
14 int item_id = item.getItemId();
15
16 switch (item_id)
17 {
18 case R.id.about:
19 /* 新建一个Intent对象 */
20 Intent intent = new Intent();
21 /* 指定intent要启动的类 */
22 intent.setClass(Activity01.this, Activity02.class);
23 /* 启动一个新的Activity */
24 startActivity(intent);
25 /* 关闭当前的Activity */
26 Activity01.this.finish();
27 break;
28 case R.id.exit:
29 Activity01.this.finish();
30 break;
31 }
32 return true;
33 }

 

android menu



你可能感兴趣的:(android)