介绍各种menu的实现:
1.title only
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/jump"
android:title="@string/jump" />
<item android:id="@+id/dive"
android:title="@string/dive" />
</menu>
2.titile and icon
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/happy"
android:title="Happy"
android:icon="@drawable/stat_happy" />
<item android:id="@+id/neutral"
android:title="Neutral"
android:icon="@drawable/stat_neutral" />
<item android:id="@+id/sad"
android:title="Sad"
android:icon="@drawable/stat_sad" />
</menu>
3.submenu(包含子menu)
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="Normal 1" />
<item android:id="@+id/submenu"
android:title="Emotions">
<menu>
<item android:id="@+id/happy"
android:title="Happy"
android:icon="@drawable/stat_happy" />
<item android:id="@+id/neutral"
android:title="Neutral"
android:icon="@drawable/stat_neutral" />
<item android:id="@+id/sad"
android:title="Sad"
android:icon="@drawable/stat_sad" />
</menu>
</item>
<item android:title="Normal 2" />
</menu>
4.groups
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/browser_visibility"
android:title="@string/browser_visibility" />
<group android:id="@+id/browser">
<item android:id="@+id/refresh"
android:title="@string/browser_refresh" />
<item android:id="@+id/bookmark"
android:title="@string/browser_bookmark" />
</group>
<item android:id="@+id/email_visibility"
android:title="@string/email_visibility" />
<group android:id="@+id/email">
<item android:id="@+id/reply"
android:title="@string/email_reply" />
<item android:id="@+id/forward"
android:title="@string/email_forward" />
</group>
</menu>
5.checkAble
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Checkable items appear only in submenus or context menus. -->
<!-- Carefully look at the attribute name checkableBehavior on groups, but
the attribute name checkable on items. The checkableBehavior encompasses
the number of items that will be checkable within that group. -->
<item android:title="None">
<menu>
<!-- The none checkableBehavior is default, but we explicitly show it here. -->
<group android:id="@+id/noncheckable_group"
android:checkableBehavior="none">
<!-- Notice how these items inherit from the group. -->
<item android:id="@+id/noncheckable_item_1"
android:title="@string/item_1" />
<item android:id="@+id/noncheckable_item_2"
android:title="@string/item_2" />
<item android:id="@+id/noncheckable_item_3"
android:title="@string/item_3" />
</group>
</menu>
</item>
<item android:title="All">
<menu>
<group android:id="@+id/checkable_group"
android:checkableBehavior="all">
<!-- Notice how these items inherit from the group. -->
<item android:id="@+id/checkable_item_1"
android:title="@string/item_1" />
<item android:id="@+id/checkable_item_2"
android:title="@string/item_2"
android:checked="true" />
<item android:id="@+id/checkable_item_3"
android:title="@string/item_3"
android:checked="true" />
</group>
</menu>
</item>
<item android:title="Single">
<menu>
<group android:id="@+id/exclusive_checkable_group"
android:checkableBehavior="single">
<!-- Notice how these items inherit from the group. -->
<item android:id="@+id/exclusive_checkable_item_1"
android:title="@string/item_1" />
<item android:id="@+id/exclusive_checkable_item_2"
android:title="@string/item_2" />
<item android:id="@+id/exclusive_checkable_item_3"
android:title="@string/item_3"
android:checked="true" />
</group>
</menu>
</item>
<item android:title="All without group">
<menu>
<!-- Notice how these items have each set. -->
<item android:id="@+id/nongroup_checkable_item_1"
android:title="@string/item_1"
android:checkable="true" />
<item android:id="@+id/nongroup_checkable_item_2"
android:title="@string/item_2"
android:checkable="true"
android:checked="true" />
<item android:id="@+id/nongroup_checkable_item_3"
android:title="@string/item_3"
android:checkable="true"
android:checked="true" />
</menu>
</item>
</menu>
6.shortcuts
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/invisible_item"
android:visible="false"
android:alphabeticShortcut="i"
android:title="Invisible item" />
<item android:id="@+id/a_item"
android:alphabeticShortcut="a"
android:title="Alvin" />
<item android:id="@+id/b_item"
android:alphabeticShortcut="b"
android:title="Bart" />
<item android:id="@+id/c_item"
android:alphabeticShortcut="c"
android:title="Chris" />
<item android:id="@+id/d_item"
android:alphabeticShortcut="d"
android:title="David" />
<item android:id="@+id/e_item"
android:alphabeticShortcut="e"
android:title="Eric" />
<item android:id="@+id/f_item"
android:alphabeticShortcut="f"
android:title="Frank" />
<item android:id="@+id/g_item"
android:alphabeticShortcut="g"
android:title="Gary" />
<item android:id="@+id/h_item"
android:alphabeticShortcut="h"
android:title="Henry" />
<item android:id="@+id/excl_item"
android:alphabeticShortcut="!"
android:title="Exclamation" />
</menu>
7.order
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<!-- These are in reverse order in this resource, but the orderInCategory attribute will
order them for the menu (they all have the same default category). -->
<item android:id="@+id/fourth_item"
android:orderInCategory="3"
android:title="Fourth" />
<item android:id="@+id/third_item"
android:orderInCategory="2"
android:title="Third" />
<item android:id="@+id/second_item"
android:orderInCategory="1"
android:title="Second" />
<item android:id="@+id/first_item"
android:orderInCategory="0"
android:title="First" />
</menu>
8.category and order
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<!-- This group uses the default category. -->
<group android:id="@+id/most_used_items">
<item android:id="@+id/last_most_item"
android:orderInCategory="10"
android:title="@string/last_most_often" />
<item android:id="@+id/middle_most_item"
android:orderInCategory="7"
android:title="@string/middle_most_often" />
<item android:id="@+id/first_most_item"
android:orderInCategory="4"
android:title="@string/first_most_often" />
</group>
<!-- This group uses the secondary category, which is used for less oftenly used items.
Notice these items will show up after the above items.
(Furthermore, notice how the orders in each category are independent from the other
category.) -->
<group android:id="@+id/least_used_items"
android:menuCategory="secondary">
<item android:id="@+id/last_least_item"
android:orderInCategory="3"
android:title="@string/last_least_often" />
<item android:id="@+id/middle_least_item"
android:orderInCategory="2"
android:title="@string/middle_least_often" />
<item android:id="@+id/first_least_item"
android:orderInCategory="0"
android:title="@string/first_least_often" />
</group>
</menu>
9.visible
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/visible_item"
android:title="Visible"
android:alphabeticShortcut="a" />
<item android:id="@+id/hidden_item"
android:title="Hidden"
android:visible="false"
android:alphabeticShortcut="b" />
<group android:id="@+id/hidden_group"
android:visible="false">
<item android:id="@+id/hidden_by_group"
android:title="Hidden by group"
android:alphabeticShortcut="c" />
</group>
</menu>
10.disable
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/enabled_item"
android:title="Enabled"
android:icon="@drawable/stat_happy" />
<item android:id="@+id/disabled_item"
android:title="Disabled"
android:enabled="false"
android:icon="@drawable/stat_sad" />
<item android:id="@+id/enabled_item_2"
android:title="Enabled"
android:icon="@drawable/stat_happy" />
<item android:id="@+id/disabled_item_2"
android:title="Disabled"
android:enabled="false"
android:icon="@drawable/stat_sad" />
<item android:id="@+id/enabled_item_3"
android:title="Enabled"
android:icon="@drawable/stat_happy" />
<item android:id="@+id/disabled_item_3"
android:title="Disabled"
android:enabled="false"
android:icon="@drawable/stat_sad" />
<item android:id="@+id/enabled_item_4"
android:title="Enabled"
android:icon="@drawable/stat_happy" />
<item android:id="@+id/disabled_item_4"
android:title="Disabled"
android:enabled="false"
android:icon="@drawable/stat_sad" />
</menu>
11.View Menu
// Reference the Gallery view
Gallery g = (Gallery) findViewById(R.id.gallery);
// Set the adapter to our custom adapter (below)
g.setAdapter(new ImageAdapter(this));
// Set a item click listener, and just Toast the clicked position
g.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView parent, View v, int position, long id) {
Toast.makeText(Gallery1.this, "" + position, Toast.LENGTH_SHORT).show();
}
});
// We also want to show context menu for longpressed items in the gallery
registerForContextMenu(g);
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
menu.add(R.string.gallery_2_text);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
Toast.makeText(this, "Longpress: " + info.position, Toast.LENGTH_SHORT).show();
return true;
}