2025-03-25

一、Android提供瞭一些簡單的方法來為應用添加Menu菜單。

提供瞭三種類型應用菜單:

1、Options Menu:通過Menu按鈕調用菜單

2、Context Menu:通過長按屏幕,調用註冊瞭的上下文菜單

3、Submenu:通過觸摸Menu Item,調用子菜單選項

 

二、下面通過案例,來介紹如何定義Menu菜單、處理選項事件。

1、在/res/目錄下新建menu文件夾,用於存儲Menu XML資源文件

2、在/res/menu/下新建menu1.xml菜單界面描述文件

[html] <?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android">   
    <item android:id="@+id/menu1" android:title="菜單1" />   
    <item android:id="@+id/menu2" android:title="菜單2" />   
</menu> 
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/menu1" android:title="菜單1" /> 
    <item android:id="@+id/menu2" android:title="菜單2" /> 
</menu>

3、顯示菜單,需重寫Activity中onCreateOptionsMenu(Menu menu)方法

[java] @Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu1, menu);//調用第二步中定義的Menu界面描述文件  
    return true; 

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
     MenuInflater inflater = getMenuInflater();
     inflater.inflate(R.menu.menu1, menu);//調用第二步中定義的Menu界面描述文件
  return true;
 }onCreateOptionsMenu,當用戶觸擊Menu按鈕時,會調用這個方法。

 

4、設置“菜單1”、“菜單2”的選中事件

  @Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    Toast.makeText(this, String.valueOf(item.getItemId()), Toast.LENGTH_LONG).show(); 
    return super.onOptionsItemSelected(item); 

    @Override
 public boolean onOptionsItemSelected(MenuItem item) {
     Toast.makeText(this, String.valueOf(item.getItemId()), Toast.LENGTH_LONG).show();
  return super.onOptionsItemSelected(item);
 }這裡將每次選中的選項ID顯示在屏幕上。

 

5、重寫Activity中onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo)

[java]    @Override 
public void onCreateContextMenu(ContextMenu menu, View v, 
        ContextMenuInfo menuInfo) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu1, menu); 
    super.onCreateContextMenu(menu, v, menuInfo); 

    @Override
 public void onCreateContextMenu(ContextMenu menu, View v,
   ContextMenuInfo menuInfo) {
     MenuInflater inflater = getMenuInflater();
     inflater.inflate(R.menu.menu1, menu);
  super.onCreateContextMenu(menu, v, menuInfo);
 }
之後當用戶長按屏幕時,將會顯示菜單項。

 

6、設置上下文菜單選項的選中事件

[java]  @Override 
public boolean onContextItemSelected(MenuItem item){ 
    Toast.makeText(this, String.valueOf(item.getItemId()), Toast.LENGTH_LONG).show(); 
    return super.onContextItemSelected(item); 

    @Override
    public boolean onContextItemSelected(MenuItem item){
     Toast.makeText(this, String.valueOf(item.getItemId()), Toast.LENGTH_LONG).show();
     return super.onContextItemSelected(item);
    }這裡僅顯示選中選項的ID

效果截圖:

  

 

三、創建子菜單、單選子菜單、多選子菜單

1、子菜單

在<item/>標簽內嵌套<menu/>

[html]  <menu 
  xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/submenu" 
          android:title="菜單項1"> 
        <menu> 
            <item android:id="@+id/submenu_item1" 
                  android:title="子菜單項1" /> 
        </menu> 
    </item> 
</menu> 
<menu
  xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/submenu"
          android:title="菜單項1">
        <menu>
            <item android:id="@+id/submenu_item1"
                  android:title="子菜單項1" />
        </menu>
    </item>
</menu>
2、單選子菜單、多選子菜單
使用group標簽,設置屬性android:checkableBehavior其中的三個值:single、all、none

single設置為單選,all為多選,none為普通選項

更多的屬性說明可以閱讀文檔:http://android.toolib.net/guide/topics/resources/menu-resource.html

多選示例:

[html]  <?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android">   
    <item android:id="@+id/csubmenu3" android:title="多選菜單">   
        <menu>   
            <group android:checkableBehavior="all">   
                <item android:title="子菜單1"/>   
                <item android:title="子菜單2"/>   
                <item android:title="子菜單3"/>   
            </group>   
        </menu>   
    </item> 
</menu> 
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
 <item android:id="@+id/csubmenu3" android:title="多選菜單"> 
        <menu> 
            <group android:checkableBehavior="all"> 
                <item android:title="子菜單1"/> 
                <item android:title="子菜單2"/> 
                <item android:title="子菜單3"/> 
            </group> 
        </menu> 
    </item>
</menu>效果如下:

  

 

單選示例:

[html]  <?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android">   
    <item android:id="@+id/csubmenu2" android:title="單選菜單">   
        <menu>   
            <group android:checkableBehavior="single">   
                <item android:title="子菜單1"/>   
                <item android:title="子菜單2"/>   
                <item android:title="子菜單3"/>   
            </group>   
        </menu>   
    </item> 
</menu> 
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
 <item android:id="@+id/csubmenu2" android:title="單選菜單"> 
        <menu> 
            <group android:checkableBehavior="single"> 
                <item android:title="子菜單1"/> 
                <item android:title="子菜單2"/> 
                <item android:title="子菜單3"/> 
            </group> 
        </menu> 
    </item>
</menu>效果如下

  

 

更多關於Menu方面的內容,可以閱讀文檔:http://android.toolib.net/guide/topics/resources/menu-resource.html

 
摘自  God's blog
 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *