zoukankan      html  css  js  c++  java
  • 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溢出菜单

  • 相关阅读:
    CodeForces 156B Suspects(枚举)
    CodeForces 156A Message(暴力)
    CodeForces 157B Trace
    CodeForces 157A Game Outcome
    HDU 3578 Greedy Tino(双塔DP)
    POJ 2609 Ferry Loading(双塔DP)
    Java 第十一届 蓝桥杯 省模拟赛 19000互质的个数
    Java 第十一届 蓝桥杯 省模拟赛 19000互质的个数
    Java 第十一届 蓝桥杯 省模拟赛 19000互质的个数
    Java 第十一届 蓝桥杯 省模拟赛十六进制转换成十进制
  • 原文地址:https://www.cnblogs.com/adison/p/3761248.html
Copyright © 2011-2022 走看看