菜單Menu(AS開發實戰第四章學習筆記)
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開發實戰第四章學習筆記)