menu 在 android中是个非常常用的控件,以前自己做项目的时候通常都是将系统的menu相关方法在activity中直接删去,并且将主题换为fullscreen,然后再在layout中引入自己画好的新的标题栏。

实际上有更好的方法。

并不需要将系统方法删去,只需要将系统menu加上自己的图片,例如:

<?xml version="1.0" encoding="utf-8"?>    


@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.menu_card_details, menu);tintMenuItems(menu);return true;}@Overridepublic boolean onPrepareOptionsMenu(Menu menu) {menu.findItem(R.id.menu_edit).setEnabled(mIsCardDetailsLoaded);return true;}@Overridepublic 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. 浅谈Java中Collections.sort对List排序的两种方法
  2. Python list sort方法的具体使用
  3. python list.sort()根据多个关键字排序的方法实现
  4. android上一些方法的区别和用法的注意事项
  5. android实现字体闪烁动画的方法
  6. Android(安卓)Wifi模块分析(三)
  7. Android中dispatchDraw分析
  8. Android四大基本组件介绍与生命周期
  9. Android(安卓)MediaPlayer 常用方法介绍

随机推荐

  1. MongoDB Go Driver使用帮助文档
  2. vmware如何将主机硬盘挂载到虚拟机
  3. MongoDB 排序内存超过 32M 限制
  4. Ubuntu中安装vmware tools工具
  5. MongoDB基础命令及操作 (仅学习)
  6. Oralce数据库设计规范V3
  7. 2.4.18预读算法详解
  8. 微服务架构 vs. SOA架构
  9. 读书 | Making Sense of Stream Processi
  10. Elasticsearch从入门到放弃:索引基本使用