Android_menu
2016-03-14 本文已影响331人
Ling912
1.在menu下新建一个xml menu文件
关于android:showAsAction属性,这个属性可以接收的属性值有:--1--.alaways:这个值会使菜单项一直显示在ActionBar上。--2--ifRoom:如果有足够的空间,这个值会使菜单显示在ActionBar上。--3--.never:这个值菜单永远不会出现在ActionBar是。--4--.withText:这个值使菜单和它的图标,菜单文本一起显示;
图1:menu.xml2.在activity中复写onCreateOptionsMenu
这里需要做的是找到menu文件,也就是实例化一个menu对象;
3.在activity中复写onPrepareOptionsMenu
这里需要做的是找到每一个的menu的item项、跟前一步骤类似。
图2:activity里面的create和preare方法4.在activity中复写onOptionsItemSelected
既然有menu菜单,那肯定要有点击事件拉,没点击事件那还有毛用,对吧,点击事件就需要重写onOptionsItemSelected,里面加一个switch,里面case每个item的id就可以了,就这么简单。
图3:click点击事件题外:关于invalidateOptionsMenu()
invalidateOptionsMenu是动态的改变menu菜单的item项的是否有效性,为在很多时候都需要用到,例如让menu项不能点击。这个时候就要重写invalidateOptionsMenu()在这个方法里面写上控制item项的相关代码,然后在调用这个方法。
最后浅谈下menu的执行顺序:
先调用onCreateOptionsMenu(),然后在调用onPrepareOptionsMenu(),在每次用户访问菜单的时候都调用onPrepareOptionsMenu(),而不是调用onCreateOptionsMenu(),因为一个activity就只有一个menu对象。如果调用了invalidateOptionsMenu(),那么当用户再次访问菜单的时候也会调用onPrepareOptionsMenu(),而不会另外再创建。