options menu最多只能在屏幕最下面顯示6個菜單選項,成爲icon menu,icon menu不能有checkable選項。多餘6的會以more icon menu來調出,成爲expanded menu。options menu通過activity的onCreateOptionsMenu來生成,只會在menu第一次生成時調用。任何想改變options menu的想法只能在onPrepareOptionsMenu來實現,這個函數會在menu顯示前調用。onOptionsItemSelected 處理選中的菜單項。
context menu是跟某個具體的view綁定在一起,在activity調用registerForContextMenu來爲某個view註冊context menu。context menu在顯示前都會調用onCreateContextMenu來生成menu。onContextItemSelected選中的菜單項。
android還提供了對菜單項進行分組的功能,可以把相似功能的菜單項分成同一個組,這樣就可以通過調用setGroupCheckable,setGroupEnabled,setGroupVisible來設置菜單屬性,而無須單獨設置。
響應菜單項單擊事件
3種方式
menuOptionsSelected
menuItemSelected
onMenuItemClick
動態添加、修改和刪除菜單項
菜單項的增刪改查
增:add:添加菜單項
addSubMenu:表示向這個菜單項中添加子菜單項
刪:removeItem:刪除指定的那個菜單項
removeGroup:刪除指定的某組菜單項
改:
選項菜單:onPrepareOptionsMenu()——> MenuItem->setXXX()
上下文菜單:onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {} 方法在每次調用上下文菜單時都會被調用一次
子菜單的創建
Xml創建
Menu.getMenuInflater ().inflater(R.menu.submenu, submenu);
動態創建
Menu submenu = Menu.addSubMenu(x, x, x, x)
submenu.add()
submenu.add()
main_menu.addSubMenu(x,x,x,x);
帶單選或複選的子菜單
SubMenu submenu = menu.addSubMenu(組號,添加的菜單項 , 在該組中的放置位置,顯示的菜單名);
submenu.setGroupCheckable(組號,是否可選,是否爲單選);
sb.getItem(0).setCheckable(設置是否可選);
sb.getItem(0).setChecked(設置是否默認選中);
AlertDialog的常見方法
創建AlertDialog對象的方法:
創建一個AlertDialog的Builder對象,利用該Builder對象可使用多個方法,分別用於設定對話框的標題,信息,按鈕等
AlertDialog.Builder builder = new Builder(類名);
builder.setTitle(標題):設置對話框的標題
builder.setMessage(對話框信息):設置對話框顯示信息
setItems(int itemsld,DialogInterface.OnclickListener listener):創建普通列表對話框
setMultiChoiceItems(CharSequence[] items,Boolean[] checkedItems,DialogInterface.OnMulti ChoiceClickListener listener):創建多選列表對話框
setSingleChoiceItems(CharSequence[] items,int checkedItem,DialogInterface.OnMulti ChoiceClickListener listener):創建單選列表對話框
setAdapter(ListAdapter adapter,DialogInterface.OnClickListener listener):創建根據ListAdapter提供列表項的列表對話框
builder.setPositiveButton(按鈕名, 監聽器及其方法()):創建AlertDialog的按鈕
AlertDialog的監聽器方法
public void onClick(DialogInterface dialog, int which)該Dialog的監聽器方法,監聽所有的dialog對象,並且對它們進行排號
切記:
使用dialog時一定要記得調用builder.create().show();方法,否則,該AlertDialog會不顯示
一個AlertDialog的實例方法:
AlertDialog.Builder builder = new Builder(RActivity.this);
builder.setTitle("導入/導出聯繫人");
builder.setItems(new String[] { sub5_01, sub5_02, sub5_03, sub5_04 },
new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
// 註冊使用對話框裏的監聽器
builder.setNegativeButton("取消",
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
});
// 註冊顯示系統對話框
builder.create().show();