在ActionBar / ToolBar 中添加 overflow menu的方法

在ActionBar/ Toolbar 中添加overflow menu 有几种不同的方法,比如通过反射,设置style等。今天要说的是通过修改style.xml来显示overflow的方法。

1、首先,需要在values/style.xml中添加overflow的相关属性,如下:

<style name="Overflow" parent="@android:style/Widget.Holo.ActionButton.Overflow">
        <item name="android:src">@drawable/ic_menu_moreoverflow_normal_holo_dark</item>
    </style>

这里的overflow icon可以自己去Android SDK中找,在platforms/android-xx/data/res/drawable-xxx 下,有很多Google官方的icon。这样就相当于给overflow设置一个图标。

2、在项目目录下面的res文件夹下,找到menu(没有的话新建一个),添加一个xml文件main,这个main.xml设置的就是overflow中的item,即点击之后要显示的内容。如下:

 <item
        android:id="@+id/resetLocation"
        android:title="item1"
        android:orderInCategory="100"
        android:showAsAction="never"
        />

这里orderInCategory设置的是item的优先级,值越大优先级越低,设置100会让其在overflow menu中显示。
showAsAction属性的意思是item的显示方式,具体的值在这里也说明一下:

  1. ifRoom
    会显示在Item中,但是如果已经有4个或者4个以上的Item时会隐藏在溢出列表中。当然个数并不仅仅局限于4个,依据屏幕的宽窄而定
  2. never
    永远不会显示。只会在溢出列表中显示,而且只显示标题,所以在定义item的时候,最好把标题都带上。
  3. always
    无论是否溢出,总会显示。
  4. withText
    withText值示意Action bar要显示文本标题。Action bar会尽可能的显示这个标题,但是,如果图标有效并且受到Action bar空间的限制,文本标题有可能显示不全。
  5. collapseActionView
    声明了这个操作视窗应该被折叠到一个按钮中,当用户选择这个按钮时,这个操作视窗展开。否则,这个操作视窗在默认的情况下是不可见的。一般要配合ifRoom一起使用才会有效果。

3、定义好main.xml 之后,需要在MainActivity中重写onOptionMenu方法,如下:

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main,menu);
        return true;
    }

4、最后为overflow menu中的item添加监听,重写MainActivity中的onOptionsItemSelected方法:

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
             case R.id.resetLocation:                        Toast.makeText(context,"item1",Toast.LENG_SHORT).show();
                break;
        }
        return super.onOptionsItemSelected(item);
    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值