menu 在 android中是个非常常用的控件,以前自己做项目的时候通常都是将系统的menu相关方法在activity中直接删去,并且将主题换为fullscreen,然后再在layout中引入自己画好的新的标题栏。
实际上有更好的方法。
并不需要将系统方法删去,只需要将系统menu加上自己的图片,例如:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/menu_edit" android:icon="@drawable/ic_edit" android:showAsAction="always" android:title="@string/common_menu_edit"/> </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); } }
这样就可以实现我们的自定义菜单,简单方便。
虽然我觉得自己在主layout中包裹一个layout用来做标题栏也很方便,但是最近的实际开发中,前辈们貌似都是用我刚才提到的方法来做菜单,特记之。
android 细节之 menu 之 invalidateOptionsMenu,布布扣,bubuko.com
android 细节之 menu 之 invalidateOptionsMenu
原文地址:http://blog.csdn.net/yiding_he/article/details/38410151