为了账号安全,请及时绑定邮箱和手机立即绑定

ActionBarSherlock中的强制溢出菜单

ActionBarSherlock中的强制溢出菜单

LEATH 2019-12-13 15:10:55
我想在ICS之前的设备(2.3-2.1)上使用4.0+溢出菜单。我在ActionBarSherlock中使用HoloEverywhere。我尝试了以下解决方案:ActionBarSherlock和HoloEverywhere-强制溢出?但它不起作用,因为absForceOverflow不存在。它是在最新版本中删除的吗?我已经检查了RABS和HE库项目的文件,但该字段根本不存在。我的应用程序的主题设置为@style/Holo.Theme.Sherlock.Light,这就是我试图继承的主题,并将absForceOverflow参数集添加到true。
查看完整描述

2 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

正如Siddharth Lele指出的那样,在上一个ABS版本中已将其删除,以使其行为与实际的操作栏相同。因此,乍一看,放弃显示此菜单是最佳选择。


但是,在我看来,某些设备在屏幕上显示的溢出菜单而不是其他设备上显示的溢出菜单是Android Action Bar中的一个重大设计缺陷。原因如下:


在具有硬件菜单键的设备中,菜单不会显示在操作栏中。在最新的设备中,趋势是将硬件按钮的数量减少到最少,因为它被认为更加用户友好(并且由于iphone只具有一个按钮,所以他们复制了这种设计)。其他制造商的确包含菜单按钮,但是除非您将其按下,否则它是隐藏的(是的,当您不再需要灯光时,它会亮起。这不是一个明智的设计,但当所有按钮都关闭时,电话看起来更像是虹吸)。


为了更好地理解其含义,我们来看一个示例: 用户A拥有带有菜单键的设备。他正在使用他最喜欢的邮件客户端。配置邮件帐户的选项与常用选项(帮助,关于等)一起放在溢出菜单中。他想添加第二个帐户,但对如何进入此菜单一无所知。屏幕上没有信息可以帮助他意识到该做什么。因此,用户A问他的朋友B,谁也在使用此邮件客户端。用户B拥有最新的Nexus N + 1 Googlephone,并且能够查看操作栏中的溢出图标,因为他的设备没有使用硬件菜单键。他展示了A如何通过打开此菜单来添加第二个帐户。用户A现在完全困惑,因为他们使用的是相同的应用程序版本。沮丧,A可能认为问题出在他的手机上,因为它太旧了。B也很困惑。


在这一点上,您可能会同时考虑A并且B都是傻瓜,无法弄清楚如何使用智能手机。但是,与台式机应用程序不同,绝大多数智能手机用户只知道其设备的基本知识。他们以前的手机很可能是带有简单固件的键盘设备。电池没电了,他们去商店更换了电池,但是缺货了。他们本可以在互联网上订购一部手机,但比购买一部新手机要贵得多。因此,他们被出售了具有触摸屏功能的手机,因为如今的手机就是这样。现在,他们必须面对一台配备完善操作系统的小型计算机。更糟糕的是,该手机仅带有“快速入门指南”,并且要获取完整的手册,他们必须从互联网上下载pdf。你猜怎么了?他们不会。


如果您正在开发移动应用程序,则应假设用户可能不了解计算机,操作系统或类似应用程序。您应该使GUI在各种设备上看起来都相似,以便人们可以学习并记住如何使用它。不要责怪Action Bar设计人员:如果用户喜欢A或B不知道如何转到选项菜单,那么首先是您的错。因此,您应该包括一种进入始终可见的选项屏幕的方法。


后退键也会发生类似的情况。某些设备可能具有硬件后退键,而较新的设备通常没有。但是,只要我们能够返回到应用程序,我们总是在操作栏中显示类似箭头的按钮,对吗?是的,我知道一个按钮在“导航树”中向后导航,而另一个按钮在“时光倒流”中导航,但这又是另一个设计缺陷:对于普通用户而言,后退只是返回。他在屏幕上有此按钮,也可以使用硬件按钮,但这是可选的。溢出菜单也应该这样做。


因此,如果您(像我一样)认为这是一个重要的按钮,请不要放弃。提供常规的主选项菜单,并在其中添加相关的子菜单。使它成为一个操作按钮,并为其分配一个描述性图标,甚至是诸如“ MENU”之类的文字描述。您还可以模仿溢出菜单图标,只需使用以下可绘制对象之一:


    // For ActionBarSherlock

    abs__ic_menu_moreoverflow_normal_holo_dark.png

    abs__ic_menu_moreoverflow_normal_holo_light.png


    // For ActionBar

    ic_menu_moreoverflow_normal_holo_light.png

    ic_menu_moreoverflow_normal_holo_dark.png

此外:去并将图像复制粘贴到您的项目res文件夹中。您永远不会知道将来的ABS版本或ActionBar的下一个实现是否会包含它们。



查看完整回答
反对 回复 2019-12-14
  • 2 回答
  • 0 关注
  • 428 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信