• ActionBar 溢出菜单和兼容问题解决


          当我们想做一个类似于微信菜单

    很快我们应该可以想到可以用support-v7包或者actionbarshecklock,然后就写menu布局,如下

    <menu xmlns:android="http://schemas.android.com/apk/res/android" >

        <!-- add submenu -->
        <item
            android:id="@+id/menu_add"
            android:icon="@drawable/actionbar_add_icon"
            android:showAsAction="always"
            android:title="@string/description">
            <menu>
                <item
                    android:icon="@drawable/actionbar_camera_icon"
                    android:showAsAction="ifRoom|withText"
                    android:title="拍照"/>
                <item
                    android:icon="@drawable/actionbar_facefriend_icon"
                    android:showAsAction="ifRoom|withText"
                    android:title="群聊"/>
                <item
                    android:icon="@drawable/actionbar_particular_icon"
                    android:showAsAction="ifRoom|withText"
                    android:title="我的微信"/>
                <item
                    android:icon="@drawable/actionbar_search_icon"
                    android:showAsAction="ifRoom|withText"
                    android:title="搜索"/>
            </menu>
        </item>

        <!-- more submenu -->
        <item
            android:id="@+id/menu_more"
            android:icon="@drawable/actionbar_more_icon"
            android:showAsAction="ifRoom"
            android:title="@string/description">
            <menu>
                <item
                    android:icon="@drawable/ofm_add_icon"
                    android:showAsAction="ifRoom|withText"
                    android:title="添加"/>
                <item
                    android:icon="@drawable/ofm_card_icon"
                    android:showAsAction="ifRoom|withText"
                    android:title="银行卡"/>
                <item
                    android:icon="@drawable/ofm_collect_icon"
                    android:showAsAction="ifRoom|withText"
                    android:title="我的收藏"/>
                <item
                    android:icon="@drawable/ofm_delete_icon"
                    android:showAsAction="ifRoom|withText"
                    android:title="删除"/>
            </menu>
        </item>

    </menu>

    然后就是在onCreateOptionsMenu中调用一下menu布局,貌似一切都大功告成了,在类似于nexus5这样的机子跑起来貌似也没啥问题,但当你在魅族机子上面跑起来的时候会发现出现很奇怪的现象,如下图

          个人猜测,魅族这类机子对菜单键进行了定制,对溢出菜单会有自己的一些处理方式,那么怎么解决这个问题,而且使用这种传统做法,你会发现subMenu之 恩只能添加icon和title,而不能实现类似微信那种除了icon和title,还有小红点的效果,这时候可以考虑用ActionProvider。

        ​ActionProvider官方文档解释为为单个menu控件定义丰富的menu交互。。。。。这恰恰是我想要的。。。

         ​要使用ActionProvider,首先要继承ActionProvider写一个自定义的ActionProvider类,这个可以参考 ShareActionProvider。然后通过android:actionProviderClass属性在menu布局里导入。

         ​利用ActionProvider,我们可以实现和刚才一模一样的效果,而且不会出现那魅族兼容的问题,我们只需要在onPrepareSubMenu 方法里面进行一些操作就行了,当然我们用ActionProvider还可以实现更复杂的效果,因为它里面的ActionView可以完全自定义,我们只 需要在onCreateActionView做对应处理就行;譬如说我们就要简单实现类似微信一样除了icon和title,还有小红点的效果,具体见 demo,在此不详述。。。

    demo地址:仿微信 actiobar溢出菜单

  • 相关阅读:
    错误滚动条eclipse快速定位到错误处
    路径原因linux下tomcat无法启动
    提示命令命令行将U盘文件系统转换成ntfs
    客户传真第四部分 个人理财风险防范8.当心银行汇款引发的诈骗
    请求错误[Python]网络爬虫(三):异常的处理和HTTP状态码的分类
    范围元【2013 GDCPC】有为杯 广东ACM省赛小总结
    编程程序国外程序员的BASIC情结——我的编程生涯始于BASIC
    执行取消利用timer实现的倒计时
    文件分析IDA反汇编/反编译静态分析iOS模拟器程序(二)加载文件与保存数据库
    安全业务第四部分 个人理财风险防范9.取款也要加小心
  • 原文地址:https://www.cnblogs.com/adison/p/3761248.html
Copyright © 2020-2023  润新知