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溢出菜单
ActionBar 溢出菜单和兼容问题解决的更多相关文章
- Open Sans字体兼容问题解决办法[font-face]
参考:http://www.tantengvip.com/2014/11/open-sans/ 1.font-face使用方法 font-face是CSS3中的一个模块,主要是把自定义的Web字体嵌入 ...
- Android ActionBar详解(二)--->使用ActionBar显示选项菜单
MainActivity如下: package cc.testsimpleactionbar1; import android.os.Bundle; import android.app.Activi ...
- WPF中不规则窗体与WebBrowser控件的兼容问题解决办法
原文:WPF中不规则窗体与WebBrowser控件的兼容问题解决办法 引言 这几天受委托开发一个网络电视项目,要求初步先使用内嵌网页形式实现视频播放和选单,以后再考虑将网页中的所有功能整合进桌面程序. ...
- Android的Toolbar(含溢出菜单设置[弹出菜单的使用])的使用PopMenu的样式
http://blog.csdn.net/yingtian648/article/details/52432438(转载) 1.在Toolbar.xml中设置弹出菜单的风格(app:popupThem ...
- Xamarin.Android之ActionBar与菜单
一.选项卡 如今很多应用都会使用碎片以便在同一个活动中能够显示多个不同的视图.在Android 3.0 以上的版本中,我们已经可以使用ActionBar提供的Tab来实现这种效果,而不需要我们自己去实 ...
- Android Training精要(一)ActionBar上级菜单导航图标
Navigation Up(ActionBar中的上级菜单导航图标) 在android 4.0中,我们需要自己维护activity之间的父子关系. 导航图标ID为android.R.id.home @ ...
- Easyui1.3.4+IIS6.0+IE8兼容问题解决
刚刚学习JQuery Easyui,就遇到了拦路虎,最新版本1.3.4下载下来部署到win2003 + IIS6.0中发现所有demo都不可以渲染,IE8提示错误如下: 详细内容如下: 用户代理: M ...
- 博创arm板编译内核makefile不兼容问题解决
导致这种结果的是:Make工具对低版本内核的Makefile一些旧的规则兼容不好,我们只需修改对应的Makefile. 改1:: 原始的: 大概在 1503行 / %/: prepa ...
- JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结 【转】http://blog.csdn.net/uniqer/article/details/7789104
1.兼容firefox的 outerHTML,FF中没有outerHtml的方法. 代码如下: if (window.HTMLElement) { HTMLElement.prototype.__de ...
随机推荐
- POJ 1141 Brackets Sequence (区间DP)
Description Let us define a regular brackets sequence in the following way: 1. Empty sequence is a r ...
- diff patch
http://rails-deployment.group.iteye.com/group/wiki/1318-diff-and-patch-10-minutes-guide 情景一:你正尝试从代码编 ...
- Hadoop 50090端口的页面, Replication的数字是真实的文件备份数吗? (不是)
红色方框的部分,代表Hadoop系统,人工设定的文件备份数,但不是实际的备份数.文件备份数 不会大于集群机器的总数目(因为备份文件不会同时存在一台机器上,这样就没有意义),所以如果总集群数目是2,即使 ...
- HDU 2102 A计划 (BFS)
A计划 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- 在Mac OS中配置CMake的详细图文教程http://blog.csdn.net/baimafujinji/article/details/78588488
CMake是一个比make更高级的跨平台的安装.编译.配置工具,可以用简单的语句来描述所有平台的安装(编译过程).并根据不同平台.不同的编译器,生成相应的Makefile或者project文件.本文主 ...
- 【BZOJ4956】lydsy七月月赛 I 乱搞
[BZOJ4956]lydsy七月月赛 I 题面 题解:傻题,Floyd传递闭包即可~ #include <cstdio> #include <cstring> #includ ...
- hdu5261单调队列
题意特难懂,我看了好多遍,最后还是看讨论版里别人的问答,才搞明白题意,真是汗. 其实题目等价于给n个点,这n个点均匀分布在一个圆上(知道圆半径),点与点之间的路程(弧长)已知,点是有权值的,已知,点与 ...
- webapp 打包
输入您的WAP网址,技术员马上帮您封装APP! APP人工打包-智睿软件_app打包_苹果app发布_app 上架_ios 上架_封装app_网站转app_安卓发布 http://app.niuhu1 ...
- 判断Java数组是否包含某个值
下面给出四种方式,其中最有效率的还是loop方式,有兴趣的话可以测试一下: 代码如下: public boolean findStr(String[] args,String str){ boolea ...
- 解析json的方式
一.Javascrip操作json 原始方式: var str1 = '{ "name": "jacun", "addr": "b ...