博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android 细节之 menu 之 invalidateOptionsMenu
阅读量:6340 次
发布时间:2019-06-22

本文共 1464 字,大约阅读时间需要 4 分钟。

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);		}	}
3.2执行时改变Menu ItemonCreateOptionsMenu()仅仅有在menu刚被创建时才会执行。因此要想随时动态改变OptionMenu就要实现onPrepareOptionsMenu()方法。该方法会传给你Menu对象,供使用
Android2.3或更低的版本号会在每次Menu打开的时候调用一次onPrepareOptionsMenu().
Android3.0及以上版本号默认menu是打开的。所以必须调用invalidateOptionsMenu()方法,然后系统将调用onPrepareOptionsMenu()运行update操作。

这样就能够实现我们的自己定义菜单。简单方便。

尽管我认为自己在主layout中包裹一个layout用来做标题栏也非常方便,可是近期的实际开发中,前辈们貌似都是用我刚才提到的方法来做菜单,特记之。

转载地址:http://kmhoa.baihongyu.com/

你可能感兴趣的文章
Socket通信
查看>>
一个将PDF转word、图片、PPT的在线工具
查看>>
C#网络编程—HTTP应用编程(转)
查看>>
预处理指令关键字
查看>>
【敏捷开发】敏捷开发方法综述
查看>>
Android 二维码扫描框 加四个角及中间横线自动下滑
查看>>
第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛--G-旋转矩阵
查看>>
java中cas的使用
查看>>
python类的成员
查看>>
搭建Hive平台
查看>>
基于jquery的ajax方法封装
查看>>
公共平台服务治理与鉴权
查看>>
二、LINQ之查询表达式基础
查看>>
常用正则匹配
查看>>
Java学习(一)基础概述
查看>>
Oracle基础
查看>>
c++——类 静态成员数据
查看>>
我的Cocos Creator成长之路1环境搭建以及基本的文档阅读
查看>>
Nova相关命令收集
查看>>
Python简单邮件发送源码
查看>>