android 创建3个按钮,【记录】继续尝试给Android程序的右上角的ActionBar中添加三个点的选项按钮...
【背景】
想要给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中添加三个点的选项按钮...相关推荐
- android 把异常写入到文本里,尝试在Android中将文件写入sdcard时发生FileNotFoundException(权限被拒绝)...
从标题中可以看到,我在Android中将文件写入sdcard时遇到问题.我想写入将在sdcard上的公共空间中的文件,以便任何其他应用程序都可以读取它. 首先,我检查sdcard是否已安装: Envi ...
- java Android创建容器,Java-在具有(没有)DI容器的Android中正确进行依赖项注入(匕首1)...
我目前正在开发(实际上是在构建)具有蓝牙连接和功能的Android应用: RESTful服务的HTTP通信.我碰巧遇到了一个名为Dagger的"依赖注入"框架,这对我来说是革命性的 ...
- android xml文件放在哪里,android 创建 xml文件
android创建xml文件的方法. 要操作android的外部存储,所以要在AndroidManifest.xml文件中添加权限. 首先要创建一个XmlSerialize对象. 并创建一个文件,并打 ...
- Android P 解决“从锁定屏幕中添加用户”功能不起作用
问题描述 打开设置–>系统–>高级–>多用户,如下图所示: 测试同事发现当没有启用这个功能时候,在锁屏页面还是可以添加新用户,默认是没有打开这个功能的.先看看锁屏页面,在锁屏页面调出 ...
- android 8 不更新,[已解决]您可能遇到的Android 8 Oreo更新问题
第三部分:10个Android Oreo更新的常见问题以及如何修复 每次Android更新都会带来各种琐碎的问题.这些问题在大多数Android设备中很常见,包括三星,LG,华为,小米等. 问题1:随 ...
- 怎样在PropertySheet中添加按钮
1.用ClassWizard从CPropertySheet中派出出一个类CMyPropertySheet; 2.在CMyPropertySheet.h中添加一个成员变量CButton m_ ...
- Android中添加万普广告墙、推送广告等
一.配置环境 1.添加从万普SDK中下载下来的AppOffer_1.6.4.jar包 2.修改AndroidManifest.xml文件: (1)加入以下权限(是项目情况不同,可能需要不同的权限) & ...
- Android创建圆形或圆角按钮Button 真菜鸟食用
Android创建圆形或圆角按钮Button 真菜鸟食用 1.在res\drawable下创建.xml文件(我起名为round_button.xml) 你可以右击res新建Android资源文件,将R ...
- Android记录23-关于actionbar中overflow menu(溢出菜单)中的一些问题
Android记录23-关于actionbar中overflow menu(溢出菜单)中的一些问题 前言 本篇博客记录一下小巫在使用actionbar的时候遇到关于溢出菜单的一些问题: 什么是Over ...
最新文章
- redisson的锁的类型_绝对干货:利用redisson完成分布式锁功能
- 3G网络关闭,4G还会远吗?
- python路径拼接问题
- 【ABP杂烩】面向切面编程(AOP)知识总结
- 每天一道LeetCode-----字符串乘法
- 期货与期权(part3)--期货合约和期权合约
- 定时器取数据时实时进来的数据_Redis-数据淘汰策略amp;持久化方式(RDB/AOF)amp;Redis与Memcached区别...
- Python数据结构与算法(五)--链表
- 后台数据到mysql怎样保持实时更新_MySQL是如何保证数据的完整性
- .NET MVC5+ Dapper+扩展+AutoFac自动注入实现
- python能做什么工作-对话极客晨星:现在学Python 长大可以从事什么工作?
- 各大厂大数据精品分享汇总(进阶版)
- 解决数据库左右连接,查询不出为空的解决方案
- 阿里巴巴天猫总裁蒋凡被认定为杭州高层次人才
- android中实现内容搜索
- 编写一个程序对Largest函数进行测试,找出一组数据的最大值
- 用虚拟机写java程序_JAVA是什么?java是狗屁!写java程序说穿了就是在对java虚拟机这个软件进行应用。...
- python字符串与字符串抑或解析(natas11 python解法)
- 云盘 同步盘介绍 同步工具介绍
- oracle中exp中query,exp中query参数使用