Android 基礎知識(Menu)
阿新 • • 發佈:2018-12-20
1。介紹:
從官方文件瞭解到,從Android3.0(API level 11)開始,Android裝置不再要求提供一個專門的選單按鈕,轉而推薦使用ActionBar。所以現在市面上很多新裝置使用三個虛擬按鍵,並不再額外提供選單按鈕。
因為Android版本的發展,對於選單的支援各個版本有很大的區別,而Android3.0是個分水嶺,大概可以分為下面三類:
-
OptionMenu和ActionBar:一些操作的集合,如果開發的平臺在Android3.0之上,推薦使用ActionBar,如果開發的平臺在Android2.3或之下,還是可以使用OptionMenu的。
-
ContextMenu和ActionMode:ContextMenu是一個浮動的視窗形式展現一個選項列表,ActionMode是一個顯示在螢幕頂部的操作欄,允許使用者選擇多個選項,ActionMode在Android3.0之後才有支援。
-
Popup Menu:PopupMenu是固定在View上的模態選單,以彈出的方式顯示,在Android3.0之後才有支援。
2,XML檔案注入使用:
【1】建立menu 檔案,建立XML檔案
【2】XML檔案
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/action_settings1" android:orderInCategory="1" android:title="aaa"/> <item android:id="@+id/action_settings2" android:orderInCategory="2" android:title="bbbb"/> </menu>
【3】重寫Activity 中onCreateOptionsMenu 載入選單
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
}
【4】重寫Activity 中onOptionsItemSelected
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action1: Log.e("Main", "AAAAAAAAAAAAAAAAAA"); break; case R.id.action2: Log.e("Main", "BBBBBBBBBBBB"); break; } return super.onOptionsItemSelected(item); }
3,程式碼注入:
【1】onCreateOptionsMenu 建立控制元件
//當點選手機上的menu選單執行
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// getMenuInflater().inflate(R.menu.main, menu);
//通過程式碼的方式新增
menu.add(0, 1, 0, "前進");
menu.add(0, 2, 0, "後退");
menu.add(0, 3, 0, "首頁");
return true;
}
【2】onOptionsItemSelected //當想要知道具體選單的哪個條目被選中 需要重寫下面這個方法
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 1:
System.out.println("111");
break;
case 2:
System.out.println("2222");
break;
case 3:
System.out.println("33333");
break;
}
return super.onOptionsItemSelected(item);
}
【3】onMenuOpened //當用戶開啟選單的面板 這個方法就會執行
@Override
public boolean onMenuOpened(int featureId, Menu menu) {
//[1]建立對話方塊
AlertDialog.Builder builder = new Builder(this);
builder.setTitle("警告");
builder.setMessage("測試");
builder.setPositiveButton("確定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
//[2]彈出對話方塊
builder.show();
//不要系統的樣式
return false;
}