草庐IT

android - 带有菜单按钮的手机上 ActionBar 的正确用户体验?

coder 2023-12-03 原文

我有一个为 Android 2.2 构建的应用程序,所以我没有使用 3.0+ 内置 ActionBar 类,而是使用几年前引入的 Google 旧 UI 推荐来构建我自己的自定义 ActionBar 实现。

我的所有屏幕都有 1 到 3 个可以执行的操作,因此它们都非常适合 ActionBar UI(Google 建议最多有三个按钮)。现在的问题是我的屏幕都没有常规选项菜单,因此当用户按下硬件菜单按钮时它们什么也不做。

根据 Google 的界面指南,这是正确的行为。如果您的 Activity 没有选项菜单,那么在按下 Menu 按钮时它应该什么都不做。然而,我在用户测试期间发现,当用户按下菜单但没有任何反应时,用户会感到非常困惑(而且每个用户都尝试过,通常是多次)。他们说他们很欣赏通过 ActionBar 在屏幕上显示的操作,但与此同时他们希望菜单按钮执行某些操作。

我一直在研究 Google 的第一方应用程序,看起来它们总是有足够的可用选项,以便能够在 ActionBar 填满后加载选项菜单。 Google+ 似乎以传统方式使用菜单按钮在有菜单按钮的手机上显示溢出选项,并且它们在没有手机的 ActionBar 中显示下拉菜单。如果我有三个以上的操作,那会起作用,但我目前没有。

似乎满足我的用户期望的唯一方法是将一些没有值(value)的垃圾选项放入选项菜单中,这样当他们按下按钮时就会发生一些事情。我真的不想那样做。有人知道解决这个问题的好方法吗?我是否应该只留下菜单按钮并期望人们发现它什么都不做?

最佳答案

我认为可以安全地假设大多数用户不知道菜单按钮的存在,最好在屏幕上显示所有可操作的项目。 Google 的用户测试揭示了这一点,这就是为什么他们选择从 Android 3.0 开始并在最近的 4.0 版本中取消菜单并使用内置操作栏。

需要考虑的是在 pre-3.0 选项菜单/post-3.0 溢出菜单中添加一个“关于”项目。这可能只是弹出一个对话框,其中包含有关应用程序的简单信息(例如,版本、许可、网站链接、作者等)。这样,如果他们碰巧按下菜单按钮,就会有一些东西,但为了充分发挥每个 Activity 的潜力,这并不是必需的。

I have an app that's built for Android 2.2, so I'm not using the 3.0+ built-in ActionBar class but rather building my own custom ActionBar implementation using Google's older UI recommendation that was introduced a couple of years ago.

作为 Action 条库的作者,这句话让我很不安。在 3.0 之前的版本和 3.0 之后的原生版本上使用自定义操作栏实现是相当简单的。看看谷歌的Action Bar Compat样本。

...或者,您也可以使用像 ActionBarSherlock 这样的库那是为你做的! </shamelessPlug>

关于android - 带有菜单按钮的手机上 ActionBar 的正确用户体验?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8447073/

有关android - 带有菜单按钮的手机上 ActionBar 的正确用户体验?的更多相关文章

  1. ruby-on-rails - 如何使用 instance_variable_set 正确设置实例变量? - 2

    我正在查看instance_variable_set的文档并看到给出的示例代码是这样做的:obj.instance_variable_set(:@instnc_var,"valuefortheinstancevariable")然后允许您在类的任何实例方法中以@instnc_var的形式访问该变量。我想知道为什么在@instnc_var之前需要一个冒号:。冒号有什么作用? 最佳答案 我的第一直觉是告诉你不要使用instance_variable_set除非你真的知道你用它做什么。它本质上是一种元编程工具或绕过实例变量可见性的黑客攻击

  2. ruby-on-rails - 使用 rails 4 设计而不更新用户 - 2

    我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它​​不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数

  3. ruby-on-rails - 正确的 Rails 2.1 做事方式 - 2

    question的一些答案关于redirect_to让我想到了其他一些问题。基本上,我正在使用Rails2.1编写博客应用程序。我一直在尝试自己完成大部分工作(因为我对Rails有所了解),但在需要时会引用Internet上的教程和引用资料。我设法让一个简单的博客正常运行,然后我尝试添加评论。靠我自己,我设法让它进入了可以从script/console添加评论的阶段,但我无法让表单正常工作。我遵循的其中一个教程建议在帖子Controller中创建一个“评论”操作,以添加评论。我的问题是:这是“标准”方式吗?我的另一个问题的答案之一似乎暗示应该有一个CommentsController参

  4. ruby - 我可以将我的 README.textile 以正确的格式放入我的 RDoc 中吗? - 2

    我喜欢使用Textile或Markdown为我的项目编写自述文件,但是当我生成RDoc时,自述文件被解释为RDoc并且看起来非常糟糕。有没有办法让RDoc通过RedCloth或BlueCloth而不是它自己的格式化程序运行文件?它可以配置为自动检测文件后缀的格式吗?(例如README.textile通过RedCloth运行,但README.mdown通过BlueCloth运行) 最佳答案 使用YARD直接代替RDoc将允许您包含Textile或Markdown文件,只要它们的文件后缀是合理的。我经常使用类似于以下Rake任务的东西:

  5. ruby-on-rails - 使用 config.threadsafe 时从 lib/加载模块/类的正确方法是什么!选项? - 2

    我一直致力于让我们的Rails2.3.8应用程序在JRuby下正确运行。一切正常,直到我启用config.threadsafe!以实现JRuby提供的并发性。这导致lib/中的模块和类不再自动加载。使用config.threadsafe!启用:$rubyscript/runner-eproduction'pSim::Sim200Provisioner'/Users/amchale/.rvm/gems/jruby-1.5.1@web-services/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:105:in`co

  6. ruby-on-rails - 简单的 Ruby on Rails 问题——如何将评论附加到用户和文章? - 2

    我意识到这可能是一个非常基本的问题,但我现在已经花了几天时间回过头来解决这个问题,但出于某种原因,Google就是没有帮助我。(我认为部分问题在于我是一个初学者,我不知道该问什么......)我也看过O'Reilly的RubyCookbook和RailsAPI,但我仍然停留在这个问题上.我找到了一些关于多态关系的信息,但它似乎不是我需要的(尽管如果我错了请告诉我)。我正在尝试调整MichaelHartl'stutorial创建一个包含用户、文章和评论的博客应用程序(不使用脚手架)。我希望评论既属于用户又属于文章。我的主要问题是:我不知道如何将当前文章的ID放入评论Controller。

  7. ruby - 调用其他方法的 TDD 方法的正确方法 - 2

    我需要一些关于TDD概念的帮助。假设我有以下代码defexecute(command)casecommandwhen"c"create_new_characterwhen"i"display_inventoryendenddefcreate_new_character#dostufftocreatenewcharacterenddefdisplay_inventory#dostufftodisplayinventoryend现在我不确定要为什么编写单元测试。如果我为execute方法编写单元测试,那不是几乎涵盖了我对create_new_character和display_invent

  8. ruby - RVM "ERROR: Unable to checkout branch ."单用户 - 2

    我在新的Debian6VirtualBoxVM上安装RVM时遇到问题。我已经安装了所有需要的包并使用下载了安装脚本(curl-shttps://rvm.beginrescueend.com/install/rvm)>rvm,但以单个用户身份运行时bashrvm我收到以下错误消息:ERROR:Unabletocheckoutbranch.安装在这里停止,并且(据我所知)没有安装RVM的任何文件。如果我以root身份运行脚本(对于多用户安装),我会收到另一条消息:Successfullycheckedoutbranch''安装程序继续并指示成功,但未添加.rvm目录,甚至在修改我的.bas

  9. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  10. ruby-on-rails - 带有 Zeus 的 RSpec 3.1,我应该在 spec_helper 中要求 'rspec/rails' 吗? - 2

    使用rspec-rails3.0+,测试设置分为spec_helper和rails_helper我注意到生成的spec_helper不需要'rspec/rails'。这会导致zeus崩溃:spec_helper.rb:5:in`':undefinedmethod`configure'forRSpec:Module(NoMethodError)对thisissue最常见的回应是需要'rspec/rails'。但这是否会破坏仅使用spec_helper拆分rails规范和PORO规范的全部目的?或者这无关紧要,因为Zeus无论如何都会预加载Rails?我应该在我的spec_helper中做

随机推荐