main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/contextTextView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:text="长按此文本框,显示文本框上下文菜单"
/>
<EditText
android:id="@+id/contextEditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="长按编辑文本框,显示编辑文本框的上下文菜单" />
</LinearLayout>
<group>属性
id
menuCategory:对菜单进行分类,定义菜单的优先级,有效值为container、system、secondary和alternative
orderInCategory:一个分类排序整数
checkableBehavior:选择行为,单选,多选还是其他。有效值为none,all和single。
visible
enabled
<item>属性
id
menuCategory:菜单分类
orderInCategory:分类排序
title:菜单标题
titleCondensed:浓缩标题,适合标题太长的时候使用
icon:菜单图标
alphabeticShortcut:字符快捷键
numericShortcut:数字快捷键
checkable:是否可选
checked:是否已经被选
visible
enabled
option_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/item1" android:title="menu 1">
<menu>
<group android:id="@+id/group1">
<item android:id="@+id/item7" android:title="menu 1-1"></item>
<item android:id="@+id/item8" android:title="menu 1-2"></item>
<item android:id="@+id/item9" android:title="menu 1-3"></item>
</group>
</menu>
</item>
<item android:id="@+id/item2" android:title="menu 2">
<menu>
<group android:id="@+id/group2">
<item android:id="@+id/item10" android:title="menu 2-1"></item>
<item android:id="@+id/item11" android:title="menu 2-2"></item>
<item android:id="@+id/item12" android:title="menu 2-3"></item>
</group>
</menu>
</item>
<item android:id="@+id/item3" android:title="menu 3"></item>
<item android:id="@+id/item4" android:title="menu 4"></item>
<item android:id="@+id/item5" android:title="about"></item>
<item android:id="@+id/item6" android:title="exit"></item>
</menu>
MenuExampleActivity.java
package com.zeph.android.menu.example;
import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MenuExampleActivity extends Activity {
private MenuInflater mi;
private EditText mEditText;
private TextView mTextView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mEditText = (EditText) findViewById(R.id.contextEditText);
mTextView = (TextView) findViewById(R.id.contextTextView);
registerForContextMenu(mEditText);
registerForContextMenu(mTextView);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
mi = getMenuInflater();
mi.inflate(R.menu.option_menu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.item5:
Toast.makeText(getApplicationContext(), "BenZeph", Toast.LENGTH_SHORT).show();
break;
case R.id.item6:
finish();
default:
break;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
if (v.equals(mTextView)) {
menu.setHeaderTitle("TextView Menu");
menu.add("TextView Menu 1");
menu.add("TextView Menu 2");
menu.add("TextView Menu 3");
menu.add("TextView Menu 4");
} else if (v.equals(mEditText)) {
menu.setHeaderTitle("EditText Menu");
}
}
}