1. 程式人生 > >菜單Menu(AS開發實戰第四章學習筆記)

菜單Menu(AS開發實戰第四章學習筆記)

開發實戰 top nbsp 改變 blog urn 第四章 格式 reat

4.5 菜單Menu

Android的菜單主要分兩種,一種是選項菜單OptionMenu,通過按菜單鍵或點擊事件觸發,另一種是上下文菜單ContextMenu,通過長按事件觸發。頁面的布局文件放在res/layout目錄下,菜單的布局文件存放在res/menu目錄下。

1.選項菜單OptionMenu

彈出選項菜單的途徑有3種:

(1)按菜單鍵

(2)在代碼中手動打開選項菜單,即調用openOptionsMenu方法

(3)按工具欄右側的溢出菜單按鈕

實現選項菜單的功能需要重寫以下兩種方法:

onCreateOptionsMenu:在頁面打開時調用,需要指定菜單列表的XML文件

onOptionsItemSelected:在列表的菜單項被選中時調用,需要對不同的菜單項做分支處理

菜單布局文件的代碼樣例:

<menu xmlns:android=http://schemas.android.com/apk/res/android>

<item

android:id=”@+id/menu_change_time”

android:orderInCategory=”1”

android:title=”改變時間”/>

   <item

android:id=”@+id/menu_change_color”

android:orderInCategory=”8”

android:title=”改變顏色”/>

  <item

android:id=”@+id/menu_change_bg”

android:orderInCategory=”9”

android:title=”改變背景”/>

</menu>

接下來是使用選項菜單的代碼片段:

@Override

public Boolean onCreateOptionsMenu(Menu menu){

getMenuInflater().inflate(R.menu.menu_option, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

int id = item.getItemId();

if(id == R.id.……)……

else if…… ……

return true;

}

2.上下文菜單ContextMenu

彈出上下文菜單的途徑有兩種:

(1)默認在某個控件被長按時彈出,通常在onStart函數中加入registerForContextMenu方法為指定控件註冊上下文菜單,在onStop函數中加入unregisterForContextMenu方法為指定控件註銷上下文菜單。

(2)在除長按事件之外的其他事件中打開上下文菜單,先執行registerForContextMenu方法註冊菜單,然後執行openContextMenu方法打開菜單,最後執行unregisterForContextMenu方法註銷菜單

實現上下文菜單的功能需要重寫以下兩種方法:

onCreateContextMenu:在此指定菜單列表的XML文件,作為上下文菜單列表項的來源

onContextItemSelected:在此對不同的菜單項做分支處理

上下文菜單的布局文件格式同選項菜單,下面是使用上下文菜單的代碼片段:
@Override
public void onClick(View v) {
if (v.getId() == R.id.btn_context) {
registerForContextMenu(v);
openContextMenu(v);
unregisterForContextMenu(v);
}
}
@Override
protected void onResume() {
registerForContextMenu(tv_context);
super.onResume();
}
@Override
protected void onPause() {
unregisterForContextMenu(tv_context);
super.onPause();
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
getMenuInflater().inflate(R.menu.menu_option, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == ……)

else if(id == ……)

return true;
}

菜單Menu(AS開發實戰第四章學習筆記)