Android 的兩種Menu (菜單)

1、選項菜單:OptionsMenu 按menu鍵彈出的菜單


2、上下文菜單 ContextMenu 長按某個控件彈出的菜單


選項菜單:有兩種創建方式

第一種:

功能:按下menu鍵彈出菜單列表。

使用場景:必要的不常用的功能。

重寫onCreateOptionsMenu()方法(創建activity的時候會默認重寫onCreateOptionsMenu方法)

public boolean onCreateOptionsMenu(Menu menu) {

menu.add(0, 1, 0, "確定").setIcon(R.drawble.XXX);

menu.add(0, 2, 0, "取消");

return true;

}

注意:OptionsMenu最多能顯示六個、超過部分是以列表形式展現的。

按鈕的點擊事件:

重寫onOptionsItemSelected()方法:

public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) { //通過按鈕的id來區別

case 1:

Toast.makeText(this, "點擊了確定", Toast.LENGTH_LONG).show();

break;

case 2:

Toast.makeText(this, "點擊了取消", Toast.LENGTH_LONG).show();

break;


default:

break;

}

return super.onOptionsItemSelected(item);

}



第二種:直接通過xml可視化添加getMenuInflater().inflate(R.menu.xml_optionsmenu, menu);

使用這個方法來得到

//創建

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

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

return true;

}

//點擊事件

public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {

case R.id.item1:

Toast.makeText(this, "點擊了確定", Toast.LENGTH_LONG).show();

break;

case R.id.item2:

Toast.makeText(this, "點擊了確定", Toast.LENGTH_LONG).show();

break;

default:

break;

}

return super.onOptionsItemSelected(item);

}


上下文菜單 ContextMenu

創建步驟:

1、registerForContextMenu(mTextView1); //爲某個控件註冊上下文菜單

2、重寫onCreateContextMenu();

public void onCreateContextMenu(ContextMenu menu, View v,

ContextMenuInfo menuInfo) {

Log.e("onCreateContextMenu", "onCreateContextMenu");

switch (v.getId()) {

case R.id.textView1:

menu.add(0, 1, 0, "設置");

menu.add(0, 2, 0, "取消");

break;

case R.id.textView2:

menu.add(0, 3, 0, "設置1");

menu.add(0, 4, 0, "取消1");

break;

default:

break;

}

super.onCreateContextMenu(menu, v, menuInfo);

}

3、點擊事件:重寫onContextItemSelected();

public boolean onContextItemSelected(MenuItem item) {

switch (item.getItemId()) {

case 1:

mTextView1.setText("設置");

break;

case 2:

mTextView1.setText("取消");

break;

default:

break;

}

return super.onContextItemSelected(item);

}


選項菜單和上下文菜單的區別:

1、觸發方式不一樣。(按menu鍵; 長按控件)

2、顯示方式不一樣。 (界面底部彈出;界面中間)

3、上下文菜單觸發方式比較隱蔽。

4、範圍不一樣 (activity; view)

5、onCreateOptionsMenu()方法只調用一次

onCreateContextMenu()方法會被調用多次


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章