【背景】

想要给Android中的ActionBar中添加那种三个点的选项菜单,之前已经折腾过了,但是失败了,以为新版Android中没法添加呢:

但是后来在别的4.1.2的Android手机中,也还是看到了这种的三个点的按钮:

比如微信中就能看到:

墨迹天气中也有:

后来,在折腾:

期间,也还是需要先要弄出来三个点的配置菜单,才方便继续添加支持语音切换的功能。

所以此处还是要继续去想办法,把那三个点的配置菜单弄出来才行。

【折腾过程】

1.搜:

android three dot option menu

参考:

->

官网:

以及:

去看看那个onPrepareOptionsMenu以及试试效果,但是看了官网解释,这个貌似不是我所需要关心的。

2.所以还是参考官网

去一点点折腾试试吧。

3.看了官网的解释:Creates a

想到了:

此处应该可以给Setting加子菜单,这样就可以:

即使没有弄出来三个点的菜单按钮,但是也可以使用现在的Setting按钮代替三个点,然后点击Setting后,出现对应的所需要配置选项子菜单了。

但是先不这么弄。等实在搞不定了三个点的菜单,再用这个办法。

4.关于menu的各种参数详细含义,可以去官网:

中找到。

其中看到那个

android:showAsAction

的值的其中一种可能是:collapseActionView

看着有点可疑,所以去查查看。

5.参考:

貌似感觉是:

对于加入的N个menu,如果是有空间能放得下,则就显示,否则才可能被放到三个点里面的。

这里:

好像是可以点击这样的collapseActionView之后,再弹出子菜单的。

6.看了“Creating an Options Menu”部分的解释后,基本明白其中的逻辑了:

对于那三个点菜单的话,标准叫法叫做:action overflow button

但是是只在Android 3.0 (API level 11)+才会出现的

低版本的(Android 2.3.x (API level 10) or lower)对应的叫做:overflow menu,效果(不是三个点)而是More那个按钮

不论是三个点还是More按钮,作用都很明显,都表示点击后可以看到更多的按钮菜单

这些更多的菜单,都是由于之前低版本的6个Menu界面放不下了,或者是新版本的actionBar中没位置显示了,才放到这个overflow menu/button中的。

而是否放到overflow中,是通过对应的android:showAsAction参数来决定的。

对于:

android:showAsAction="ifRoom"

说的就是:

如果actionbar中放不下,就放到overflow中去。

所以,现在去试试其他一些选项的效果:

7.把:

android:id="@+id/menu_discard"

android:icon="@drawable/error_white"

android:orderInCategory="1"

android:showAsAction="ifRoom|withText"

android:title="@string/discard"/>

android:id="@+id/menu_send"

android:icon="@drawable/forward_white"

android:orderInCategory="2"

android:showAsAction="ifRoom|withText"

android:title="@string/send"/>

android:id="@+id/menu_settings"

android:icon="@drawable/settings"

android:orderInCategory="3"

android:showAsAction="ifRoom|withText"

android:title="@string/settings"/>

改为:

android:id="@+id/menu_discard"

android:icon="@drawable/error_white"

android:orderInCategory="1"

android:showAsAction="ifRoom|withText"

android:title="@string/discard"/>

android:id="@+id/menu_send"

android:icon="@drawable/forward_white"

android:orderInCategory="2"

android:showAsAction="ifRoom|withText"

android:title="@string/send"/>

android:id="@+id/menu_settings"

android:icon="@drawable/settings"

android:orderInCategory="3"

android:showAsAction="withText"

android:title="@string/settings"/>

效果是:

结果setting菜单不显示了。。。。

8.再试试:

android:id="@+id/menu_settings"

android:icon="@drawable/settings"

android:orderInCategory="3"

android:title="@string/settings"/>

结果:

也还是不显示。

9.试试:

android:id="@+id/menu_settings"

android:icon="@drawable/settings"

android:orderInCategory="3"

android:showAsAction="collapseActionView"

android:title="@string/settings"/>

结果:

也不显示。。。

10.参考:

去学习ActionBar,

对应的3.0+的,应该去看:

但是该页面内,竟然没有搜到和overflow有关的内容。。。

11.不过:

中是有overflow相关内容的。

感觉此处之所以不显示三个点的那个菜单,是因为:

当前测试是用的PAD->屏幕很大->ActionBar中空间足够足够显示所有的按钮的->所以没有多余的,放不下的菜单->所以不显示三个点

所以去试试:

换个android的手机->屏幕不够大->ActionBar中不能一次性显示所有的菜单->希望可以看到那个三个点的菜单

结果:

android:id="@+id/menu_settings"

android:icon="@drawable/settings"

android:orderInCategory="3"

android:showAsAction="collapseActionView"

android:title="@string/settings"/>

也是不显示。

然后:

android:id="@+id/menu_settings"

android:icon="@drawable/settings"

android:orderInCategory="3"

android:showAsAction="ifRoom|withText"

android:title="@string/settings"/>

效果是:

竟然也不显示了。。。

去看看代码,到底咋回事。。。

12.然后确认

android:showAsAction="ifRoom|withText"

在PAD上,的确是可以显示的。

所以再去试试:

android:showAsAction="ifRoom"

在手机上是否能显示:

结果还不能显示。

再去试试,把text都去掉:

android:id="@+id/menu_discard"

android:icon="@drawable/error_white"

android:orderInCategory="1"

android:showAsAction="ifRoom"

android:title="@string/discard"/>

android:id="@+id/menu_send"

android:icon="@drawable/forward_white"

android:orderInCategory="2"

android:showAsAction="ifRoom"

android:title="@string/send"/>

android:id="@+id/menu_settings"

android:icon="@drawable/settings"

android:orderInCategory="3"

android:showAsAction="ifRoom"

android:title="@string/settings"/>

然后是:

在手机上也还是不显示settings。。。

13.也是折腾了半天,最后才有点搞懂具体的逻辑的:

先说现象:

(1)对于三星GT-I9100G:Android 4.1.2

4.3寸屏

有物理MENU键

的手机来说:

屏幕不够大->ActionBar显示空间不是太多->貌似只能显示两个menu->

所以对于此处的代码中,有三个按钮:menu_discard,menu_send,menu_settings

来说,menu_settings始终都是不能直接显示在ActionBar上面

而不论上面的配置参数是否有是ifRoom,是否是ifRoom|withText,

结果都是:

第三个按键,是否都显示不出来,只能靠按物理MENU键,才能看到第三个菜单:

反过来说:

如果你不按MENU键,是始终看不到第三个菜单的

->一直也看不到(三个点的)overflow菜单的

(2)而对于三星GT-P5210的PADAndroid 4.2.2

也有物理MENU菜单

10.1寸屏

只显示图标不显示文字:

android:id="@+id/menu_discard"

android:icon="@drawable/error_white"

android:orderInCategory="1"

android:showAsAction="ifRoom"

android:title="@string/discard"/>

android:id="@+id/menu_send"

android:icon="@drawable/forward_white"

android:orderInCategory="2"

android:showAsAction="ifRoom"

android:title="@string/send"/>

android:id="@+id/menu_settings"

android:icon="@drawable/settings"

android:orderInCategory="3"

android:showAsAction="ifRoom"

android:title="@string/settings"/>

的效果:

不仅显示图标也显示文字:

android:id="@+id/menu_discard"

android:icon="@drawable/error_white"

android:orderInCategory="1"

android:showAsAction="ifRoom|withText"

android:title="@string/discard"/>

android:id="@+id/menu_send"

android:icon="@drawable/forward_white"

android:orderInCategory="2"

android:showAsAction="ifRoom|withText"

android:title="@string/send"/>

android:id="@+id/menu_settings"

android:icon="@drawable/settings"

android:orderInCategory="3"

android:showAsAction="ifRoom|withText"

android:title="@string/settings"/>

的效果:

也是看不到三个点的overflow菜单的。

【总结】

后续折腾,以及总结,详见:

android 创建3个按钮,【记录】继续尝试给Android程序的右上角的ActionBar中添加三个点的选项按钮...相关推荐

  1. android 把异常写入到文本里,尝试在Android中将文件写入sdcard时发生FileNotFoundException(权限被拒绝)...

    从标题中可以看到,我在Android中将文件写入sdcard时遇到问题.我想写入将在sdcard上的公共空间中的文件,以便任何其他应用程序都可以读取它. 首先,我检查sdcard是否已安装: Envi ...

  2. java Android创建容器,Java-在具有(没有)DI容器的Android中正确进行依赖项注入(匕首1)...

    我目前正在开发(实际上是在构建)具有蓝牙连接和功能的Android应用: RESTful服务的HTTP通信.我碰巧遇到了一个名为Dagger的"依赖注入"框架,这对我来说是革命性的 ...

  3. android xml文件放在哪里,android 创建 xml文件

    android创建xml文件的方法. 要操作android的外部存储,所以要在AndroidManifest.xml文件中添加权限. 首先要创建一个XmlSerialize对象. 并创建一个文件,并打 ...

  4. Android P 解决“从锁定屏幕中添加用户”功能不起作用

    问题描述 打开设置–>系统–>高级–>多用户,如下图所示: 测试同事发现当没有启用这个功能时候,在锁屏页面还是可以添加新用户,默认是没有打开这个功能的.先看看锁屏页面,在锁屏页面调出 ...

  5. android 8 不更新,[已解决]您可能遇到的Android 8 Oreo更新问题

    第三部分:10个Android Oreo更新的常见问题以及如何修复 每次Android更新都会带来各种琐碎的问题.这些问题在大多数Android设备中很常见,包括三星,LG,华为,小米等. 问题1:随 ...

  6. 怎样在PropertySheet中添加按钮

    1.用ClassWizard从CPropertySheet中派出出一个类CMyPropertySheet;       2.在CMyPropertySheet.h中添加一个成员变量CButton m_ ...

  7. Android中添加万普广告墙、推送广告等

    一.配置环境 1.添加从万普SDK中下载下来的AppOffer_1.6.4.jar包 2.修改AndroidManifest.xml文件: (1)加入以下权限(是项目情况不同,可能需要不同的权限) & ...

  8. Android创建圆形或圆角按钮Button 真菜鸟食用

    Android创建圆形或圆角按钮Button 真菜鸟食用 1.在res\drawable下创建.xml文件(我起名为round_button.xml) 你可以右击res新建Android资源文件,将R ...

  9. Android记录23-关于actionbar中overflow menu(溢出菜单)中的一些问题

    Android记录23-关于actionbar中overflow menu(溢出菜单)中的一些问题 前言 本篇博客记录一下小巫在使用actionbar的时候遇到关于溢出菜单的一些问题: 什么是Over ...

最新文章

  1. redisson的锁的类型_绝对干货:利用redisson完成分布式锁功能
  2. 3G网络关闭,4G还会远吗?
  3. python路径拼接问题
  4. 【ABP杂烩】面向切面编程(AOP)知识总结
  5. 每天一道LeetCode-----字符串乘法
  6. 期货与期权(part3)--期货合约和期权合约
  7. 定时器取数据时实时进来的数据_Redis-数据淘汰策略amp;持久化方式(RDB/AOF)amp;Redis与Memcached区别...
  8. Python数据结构与算法(五)--链表
  9. 后台数据到mysql怎样保持实时更新_MySQL是如何保证数据的完整性
  10. .NET MVC5+ Dapper+扩展+AutoFac自动注入实现
  11. python能做什么工作-对话极客晨星:现在学Python 长大可以从事什么工作?
  12. 各大厂大数据精品分享汇总(进阶版)
  13. 解决数据库左右连接,查询不出为空的解决方案
  14. 阿里巴巴天猫总裁蒋凡被认定为杭州高层次人才
  15. android中实现内容搜索
  16. 编写一个程序对Largest函数进行测试,找出一组数据的最大值
  17. 用虚拟机写java程序_JAVA是什么?java是狗屁!写java程序说穿了就是在对java虚拟机这个软件进行应用。...
  18. python字符串与字符串抑或解析(natas11 python解法)
  19. 云盘 同步盘介绍 同步工具介绍
  20. oracle中exp中query,exp中query参数使用

热门文章

  1. java正则表达式练习题目
  2. 7-8 Windows消息队列 (25 分)
  3. 手写html5游戏,HTML5 手写输入法
  4. vue-threeJS数据驱动的三维图形可视化
  5. 转帖: eureka vs consul以及其他的一些比较
  6. iOS中nil Nil NULL 区别
  7. Mysql中分页查询两个方法比较
  8. win10应用开发——如何判断应用是在手机上运行还是电脑上运行
  9. hibernate中validate的使用(转)
  10. Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式…)介绍(转)