Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android Menu

Android Menu

編輯:關於Android編程

OptionsMenu(選項菜單)

1.重寫Activity的onCreateOptionsMenu(Menu menu)方法,在該方法裡調用Menu對象的方法來添加菜單項或子菜單。

2.如果希望應用程序能響應菜單項的單擊事件,重寫Activity中的onOptionsItemSelected(MenuItem item)方法即可。

MainActivity.java

 

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
    }
    //Options菜單
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    	//通過Activity得到填充Menu的填充器
        getMenuInflater().inflate(R.menu.main, menu);
        /**給Option添加item
         * 參數1:分組的ID
         * 參數2:該item的ID
         * 參數3:添加順序,從0開始
         * 參數4:item顯示的文本*/ 
        menu.add(Menu.NONE, 1, 0, 0);
        menu.add(Menu.NONE, 2, 2, 2);
        menu.add(Menu.NONE, 4, 5, 5);
        SubMenu subMenu = menu.addSubMenu(我還能點);
        subMenu.add(Menu.NONE, 3, 6, 我是一個子選項);
        //返回true顯示菜單,返回false隱藏菜單
        return true;
    }
    //給Option添加事件監聽
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {//按下menu鍵觸發該方法
    	switch (item.getItemId()) {
		case R.id.d:
				Toast.makeText(this, d, 0).show();
			break;

		case R.id.dmxy:
			Toast.makeText(this, dmxy, 0).show();
			break;
		case R.id.dom:
			Toast.makeText(this, dom, 0).show();
			break;
		case 2:
			Toast.makeText(this, 2, 0).show();
			break;
		default:
			break;
		}
        return super.onOptionsItemSelected(item);
    }
}

main.xml

 

 



	    
根節點必須為menu才能夠正確的解析。上述可以看出來,order是指添加完事,放在哪個位置的一個排序:不寫默認是第一個(兩個都不寫按照XML先後順序),XML和Java代碼中順序相同則先加載XML的。其余的按照升序排序。

 

效果圖:

\

ContextMenu(上下文菜單)

1.重寫Activity的onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)方法

2.調用Activity的registerForContextMenu(View view)方法給view組件注冊上下文菜單。

3.如果系統事件能為菜單項提供響應,可以重寫onContextItemSelected(MenuItem item)方法,或為指定菜單項綁定事件監聽器。

 

MainActivity.java

 

public class MainActivity extends Activity {
	private Button b;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		b = (Button) findViewById(R.id.btn);
		registerForContextMenu(b);

	}

	@Override
	public void onCreateContextMenu(ContextMenu menu, View v,
			ContextMenuInfo menuInfo) {
		menu.add(Menu.NONE, 1, 1, 紅色);
		menu.add(Menu.NONE, 2, 2, 藍色);
		menu.add(Menu.NONE, 3, 3, 綠色);
		menu.add(Menu.NONE, 4, 4, 紫色);
		//給這四個菜單項設置為單選的
		menu.setGroupCheckable(0, true, true);
		//設置上下文的標題和圖標
		menu.setHeaderIcon(R.drawable.ic_launcher);
		menu.setHeaderTitle(選擇背景色);
		super.onCreateContextMenu(menu, v, menuInfo);
	}
	
	@Override
	public boolean onContextItemSelected(MenuItem item) {
		// TODO Auto-generated method stub
		return super.onContextItemSelected(item);
	}
}
上下文菜單需要長按才能夠觸發。

 

效果圖:

\

 

PoputMenu彈出菜單

 

1.調用new PopupMenu(Context context, View anchor)創建下拉菜單,android代表要激活該組件彈出菜單的組件。

2.調用PopupMenu的inflate()方法顯示彈出式菜單

3.調用PopupMenu的show()方法顯示彈出式菜單

 

MainActivity.java

 

public class MainActivity extends Activity {
	private Button b;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		b = (Button) findViewById(R.id.btn);
	}

	public void btn(View view) {
		// 創建PopupMenu對象
		PopupMenu menu = new PopupMenu(this, b);
		// 將菜單的XML資源文件加載到popup菜單中
		getMenuInflater().inflate(R.menu.popup_menu, menu.getMenu());
		// 添加事件監聽
		menu.setOnMenuItemClickListener(new OnMenuItemClickListener() {
			@Override
			public boolean onMenuItemClick(MenuItem item) {
				switch (item.getItemId()) {
				case R.id.add:
					Toast.makeText(MainActivity.this, 添加, 0).show();
					break;
				case R.id.del:
					Toast.makeText(MainActivity.this, 刪除, 0).show();
					break;
				}
				return false;
			}
		});
		menu.show();

	}
}
popup_menu.xml

 

 


 

彈出式菜單單擊即可。


效果圖:

\
 

 

總結:

1.選項菜單order是由數值來決定的,越小越靠前,不給定數值在最前面。手機按鍵menu和右上角都可以打開選項菜單

2.上下文菜單需要長按才能夠觸發

3.彈出式菜單需要單擊即可觸發

前兩者都在Activity中重寫方法實現的,後者是需要Context參數即可實現。

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved