目前还没有整理,只是把代码弄上来。
package com.mediatek.uidemo;
import android.app.Activity;
import android.os.Bundle;import android.view.ContextMenu;import android.view.ContextMenu.ContextMenuInfo;import android.view.Menu;import android.view.MenuItem;import android.view.SubMenu;import android.view.View;import android.widget.Button;import android.widget.TextView;import android.widget.Toast;public class MenuActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); this.setContentView(R.layout.menu); Button menuButton1 = (Button) findViewById(R.id.contextMenuButton1); this.registerForContextMenu(menuButton1); Button menuButton2 = (Button) findViewById(R.id.contextMenuButton2); this.registerForContextMenu(menuButton2); }@Override
public boolean onCreateOptionsMenu(Menu menu) { // TODO Auto-generated method stub menu.add(1, 1, 1, "111first").setOnMenuItemClickListener(new MenuItemClickListener()); menu.add(1, 2, 2, "122second"); menu.add(1, 3, 3, "211third"); menu.add(1, 4, 4, "311forth"); SubMenu subMenu = menu.addSubMenu(2, 1, 1, "桃子" ); subMenu.add(2, 101, 103, "大桃子"); subMenu.add(2, 102, 102, "小桃子").setOnMenuItemClickListener(new MenuItemClickListener()); return super.onCreateOptionsMenu(menu); }public class MenuItemClickListener implements MenuItem.OnMenuItemClickListener {
@Override
public boolean onMenuItemClick(MenuItem item) { Toast.makeText(MenuActivity.this, item.getTitle()+ " is selected", Toast.LENGTH_SHORT).show(); return true; //true表示完成当前item的click处理,不再传递到父类处理 } } } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { // TODO Auto-generated method stub if (v.getId() == R.id.contextMenuButton1) { menu.setHeaderTitle("button1 menu"); menu.add(300, 300, 300, "context menu1").setOnMenuItemClickListener(new MenuItemClickListener()); menu.add(300, 301, 301, "context menu2").setOnMenuItemClickListener(new MenuItemClickListener()); SubMenu subMenu = menu.addSubMenu(2, 1, 1, "桃子" ); subMenu.add(2, 101, 103, "大桃子").setOnMenuItemClickListener(new MenuItemClickListener()); subMenu.add(2, 102, 102, "小桃子").setOnMenuItemClickListener(new MenuItemClickListener()); } else { menu.setHeaderTitle("button2 menu"); menu.add(301, 300, 300, "context menu21").setOnMenuItemClickListener(new MenuItemClickListener()); menu.add(301, 301, 301, "context menu22").setOnMenuItemClickListener(new MenuItemClickListener()); } super.onCreateContextMenu(menu, v, menuInfo); }@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) { // TODO Auto-generated method stub TextView tv = (TextView) findViewById(R.id.menuTextView2); switch(item.getItemId()) { case 4: Toast.makeText(MenuActivity.this, item.getTitle()+ " is selected,item id is 4!", Toast.LENGTH_LONG).show(); break; case 400: tv.setText("another UI"); break; case 401: tv.setText("Menu UI"); break; default: Toast.makeText(MenuActivity.this, item.getTitle()+ " is selected,item id is not 4!!", Toast.LENGTH_LONG).show(); break; } return super.onMenuItemSelected(featureId, item); }@Override
public boolean onPrepareOptionsMenu(Menu menu) { // TODO Auto-generated method stub TextView tv = (TextView) findViewById(R.id.menuTextView2); String currentText = tv.getText().toString(); if("Menu UI".equals(currentText)){ menu.clear();//先清掉菜单 MenuItem item = menu.add(0, 400, 401, "to another UI"); //可以通过点击这个菜单项来改变tv1的值这样(变成N)就可以测试了 item.setIcon(android.R.drawable.alert_dark_frame);//android自带的图标 } if("another UI".equals(currentText)){ menu.clear();//先清掉菜单 MenuItem item = menu.add(0, 401, 402, "to Menu UI"); //可以通过点击这个菜单项来改变tv1的值这样(变成M)就可以测试了 item.setIcon(android.R.drawable.alert_light_frame); } menu.add(0, 402, 403, "Now is " + currentText); //现在共有两个菜单子项 return super.onPrepareOptionsMenu(menu); } }