android基礎入門AcitonBar使用(7)

一.ActionBar:

ActionBar替代瞭傳統的位於設備屏幕頂部的標題欄,它顯示應用程序的圖標和活動名稱。我們還可以向ActionBar中添加動作項,動作項是應用程序中經常執行的一些操作快捷方式。

代碼實現添加:

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		super.onCreateOptionsMenu(menu);
		CreateMenu(menu);
		return true;
	}
    private boolean MenuChoice(MenuItem item){
    	switch(item.getItemId()){
    	case 0:
    		toastPrint("點擊瞭一動作項");
    		return true;
    	case 1:
    		toastPrint("點擊瞭二動作項");
    		return true;
    	case 2:
    		toastPrint("點擊瞭三動作項");
    		return true;
    	case 3:
    		toastPrint("點擊瞭四動作項");
    		return true;
    	case 4:
    		toastPrint("點擊瞭五動作項");
    		return true;
    	}
    	return false;
    	
    }
    public void toastPrint(String str){
		
		Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
		
	}
	
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		return MenuChoice(item);
	}
	
	private void CreateMenu(Menu menu){
		MenuItem mn1 = menu.add(0,0,0," 一 ");
		{
			mn1.setIcon(R.drawable.ic_launcher);
			mn1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
		}
		MenuItem mn2 = menu.add(0,1,1," 二 ");
		{
			mn1.setIcon(R.drawable.ic_launcher);
			mn1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
		}
		MenuItem mn3 = menu.add(0,2,2," 三 ");
		{
			mn1.setIcon(R.drawable.ic_launcher);
			mn1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
		}
		MenuItem mn4 = menu.add(0,3,3," 四 ");
		{
			mn1.setIcon(R.drawable.ic_launcher);
			mn1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
		}
		MenuItem mn5 = menu.add(0,4,4," 五 ");
		{
			mn1.setIcon(R.drawable.ic_launcher);
			mn1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
		}
		
     }
 	
}

onCreateOptionsMenu()方法,為ActionBar添加動作項。調用瞭CreateMenu()方法來顯示一個菜單項列表,為瞭使菜單項顯示為動作項,使用MenuItem.SHOW_AS_ACTION_IF_ROOM常量調用其setShowAsAction()方法,這是告知android設備上如果ActionBar上有空間,將該菜單項顯示為一個動作項,當用戶點擊一個菜單項時,onOptionsItemSelected()方法被調用,然後通過MenuChoice()方法來檢測那個菜單項被點擊輸出提示信息。

menu.add(參數1,參數2,參數3,參數4);

參數1:int類型group ID參數代表組概念幾菜單項歸組便更好組方式管理菜單按鈕。

參數2:int類型item ID參數代表項目編號參數非常重要item ID對應menu選項面使用菜單時候靠item ID來判斷使用哪選項。

參數3:int類型order ID參數代表菜單項顯示順序默認0表示菜單顯示順序按照add顯示順序來顯示。

參數4:String類型title參數表示選項顯示文字。

界面顯示:

點擊menu按鈕:

前面的例子中在菜單項中沒有顯示菜單的文本內容,如果想要為動作項同時顯示圖標和文本,可以使用’ | ‘操作符加上MenuItem.SHOW_AS_ACTION_WITH_TEXT常量:

示例:

MenuItem mn1 = menu.add(0,0,0," 一 ");
		{
			mn1.setIcon(R.drawable.ic_launcher);
			mn1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM|MenuItem.SHOW_AS_ACTION_WITH_TEXT);
		}

常用顯示類型:

MenuItem.SHOW_AS_ACTION_IF_ROOM 有位置才顯示
MenuItem.SHOW_AS_ACTION_ALWAYS 始終顯示
MenuItem.SHOW_AS_ACTION_NEVER 永不顯示
MenuItem.SHOW_AS_ACTION_WITH_TEXT 顯示字符串

當我們有時候應用程序圖標設置點擊事件:

這時就需要修改MenuChoice()方法:

 private boolean MenuChoice(MenuItem item){
    	switch(item.getItemId()){
    	case android.R.id.home:
    		toastPrint("應用圖標");
    		return true;
    	case 0:
    		toastPrint("點擊瞭一動作項");
    		return true;
    	case 1:
    		toastPrint("點擊瞭二動作項");
    		return true;
    	case 2:
    		toastPrint("點擊瞭三動作項");
    		return true;
    	case 3:
    		toastPrint("點擊瞭四動作項");
    		return true;
    	case 4:
    		toastPrint("點擊瞭五動作項");
    		return true;
    	}
    	return false;
    	
    }

還需要在onCreate()中添加:

protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		ActionBar bar = getActionBar();
		bar.setDisplayHomeAsUpEnabled(true);
	}

setDisplayHomeAsUpEnabled(true)此方法設置程序圖標可以點擊。不設置則點擊不瞭。

我們也可以通過點擊圖標來跳轉到其它Activity:
在本個例子中在創建一個Activity,名稱為HelloWorld.java,不添加任何內容,隻有一個TextView控件顯示。

public class HelloWorld extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_hello_word);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.hello_word, menu);
		return true;
	}

}

修改MenuChoice()方法:

private boolean MenuChoice(MenuItem item){
    	switch(item.getItemId()){
    	case android.R.id.home:
    		toastPrint("應用圖標");
    		Intent i = new Intent(this,HelloWorld.class);
    		startActivity(i);
    		return true;
    	case 0:
    		toastPrint("點擊瞭一動作項");
    		return true;
    	case 1:
    		toastPrint("點擊瞭二動作項");
    		return true;
    	case 2:
    		toastPrint("點擊瞭三動作項");
    		return true;
    	case 3:
    		toastPrint("點擊瞭四動作項");
    		return true;
    	case 4:
    		toastPrint("點擊瞭五動作項");
    		return true;
    	}
    	return false;
    	
    }

當點擊應用程序圖標後會自動跳轉到HelloWorld。
界面顯示:




發佈留言