Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android 細節之 menu 之 invalidateOptionsMenu

android 細節之 menu 之 invalidateOptionsMenu

編輯:關於Android編程

menu 在 android中是個非常常用的控件,以前自己做項目的時候通常都是將系統的menu相關方法在activity中直接刪去,並且將主題換為fullscreen,然後再在layout中引入自己畫好的新的標題欄。

實際上有更好的方法。

並不需要將系統方法刪去,只需要將系統menu加上自己的圖片,例如:




    


@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.menu_card_details, menu);
		tintMenuItems(menu);
		return true;
	}

	@Override
	public boolean onPrepareOptionsMenu(Menu menu) {
		menu.findItem(R.id.menu_edit).setEnabled(mIsCardDetailsLoaded);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case R.id.menu_edit:
			Intent intent = prepareIntent(EditCardActivity.class, false);
			intent.putExtra(IntentExtra.UNIFIED_CARD, mUnifiedCard);
			startActivityForResult(intent, Ids.Request.EDIT_PAYMENT_CARD);
			return true;

		default:
			return super.onOptionsItemSelected(item);
		}
	}


3.2運行時改變Menu ItemonCreateOptionsMenu()只有在menu剛被創建時才會執行,因此要想隨時動態改變OptionMenu就要實現onPrepareOptionsMenu()方法,該方法會傳給你Menu對象,供使用
Android2.3或更低的版本會在每次Menu打開的時候調用一次onPrepareOptionsMenu().
Android3.0及以上版本默認menu是打開的,所以必須調用invalidateOptionsMenu()方法,然後系統將調用onPrepareOptionsMenu()執行update操作。


這樣就可以實現我們的自定義菜單,簡單方便。


雖然我覺得自己在主layout中包裹一個layout用來做標題欄也很方便,但是最近的實際開發中,前輩們貌似都是用我剛才提到的方法來做菜單,特記之。




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