Android_menu

1.在menu下新建一个xml menu文件

关于android:showAsAction属性,这个属性可以接收的属性值有:–1–.alaways:这个值会使菜单项一直显示在ActionBar上。–2–ifRoom:如果有足够的空间,这个值会使菜单显示在ActionBar上。–3–.never:这个值菜单永远不会出现在ActionBar是。–4–.withText:这个值使菜单和它的图标,菜单文本一起显示;

《Android_menu》 图1:menu.xml

2.在activity中复写onCreateOptionsMenu

这里需要做的是找到menu文件,也就是实例化一个menu对象;

3.在activity中复写onPrepareOptionsMenu

这里需要做的是找到每一个的menu的item项、跟前一步骤类似。

《Android_menu》 图2:activity里面的create和preare方法

4.在activity中复写onOptionsItemSelected

既然有menu菜单,那肯定要有点击事件拉,没点击事件那还有毛用,对吧,点击事件就需要重写onOptionsItemSelected,里面加一个switch,里面case每个item的id就可以了,就这么简单。

《Android_menu》 图3:click点击事件

题外:关于invalidateOptionsMenu()

invalidateOptionsMenu是动态的改变menu菜单的item项的是否有效性,为在很多时候都需要用到,例如让menu项不能点击。这个时候就要重写invalidateOptionsMenu()在这个方法里面写上控制item项的相关代码,然后在调用这个方法。

最后浅谈下menu的执行顺序:

先调用onCreateOptionsMenu(),然后在调用onPrepareOptionsMenu(),在每次用户访问菜单的时候都调用onPrepareOptionsMenu(),而不是调用onCreateOptionsMenu(),因为一个activity就只有一个menu对象。如果调用了invalidateOptionsMenu(),那么当用户再次访问菜单的时候也会调用onPrepareOptionsMenu(),而不会另外再创建。

    原文作者:Ling912
    原文地址: https://www.jianshu.com/p/c53a7b1f0c0a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞