2013-04-17 69 views
0

我测试了我的应用程序在Nexus 10(Android 4.2.1)上,并在操作栏上的溢出菜单工作正常。所以当溢出菜单没有出现在Galaxy Note 2上时,我惊呆了。读完Android action bar not showing overflowHow To Control use of OverFlow Menu in ICS之后,我终于意识到在Galaxy note 2上有一个内置的菜单按钮,如果有一个菜单按钮会出现“溢出菜单”按下该按钮。动作栏溢出菜单与硬件永久菜单按钮

对这两个问题的回应表明,不应该使用那里的代码来禁用永久菜单按钮,因为尽管它具有(a)使溢出菜单出现在操作栏中的效果,显然它也( b)也在其他应用程序中强制执行相同的行为。但是,对我来说,操作栏中的溢出菜单远远胜于菜单按钮,对这两个问题的评论意味着其他人也会这么想。

我的问题是,有什么可以使用该代码来禁用onResume()中的永久菜单按钮,并在onPause()中重新启用它?在我选择的应用程序中,使操作栏溢出菜单起作用的方法有多可靠,而所有其他应用程序保持不变?

为了记录,在我看来,Android设计人员(包括软件和硬件)有不知何故共谋造成这个问题,并没有简单的解决方案。一些程序员认为,让所有应用程序在单个设备上以相同方式工作比在不同设备上以相同方式工作的任何特定应用程序更重要。其他程序员认为是相反的。

+3

有超过** 3亿** Android用户的设备与菜单按钮,谁已按菜单按钮进入选项菜单(或溢出的应用程序使用类似ActionBarSherlock)。在某些情况下,他们多年来一直这样做,没有很多问题。 “一些程序员认为,让所有应用程序在单个设备上以相同的方式工作比使用不同设备上的任何特定应用程序以相同方式工作更重要” - 更重要的是,**用户**认为这一点。他们不关心你的应用在他们不使用的设备上的外观。 – CommonsWare

+1

@CommonsWare但有多个设备的用户呢? - 一个没有硬件菜单按钮,一个没有?截图导致混淆呢? - “为什么我看不到3点图标?”。那些不会自动转换到硬件菜单按钮的Android用户的新用户呢? Android的一个常见抱怨是它让新用户感到困惑。关于硬件菜单按钮,我同意。始终显示溢出图标也可以实现一致性(尽管这必须由SDK驱动才能成功)。就我个人而言,我希望在系统设置中看到一个复选框来控制这一点。 –

回答

1

正如其他人所说,你真的不应该这样做。让菜单工作,但它在每个其他应用程序(这当然取决于设备)。

此外,您无法在其他应用程序中影响菜单按钮的行为,因此您不必担心整个onPause/onResume业务。

+0

@LuxuryMode非常有趣,对这两个老问题的看法的力量使我认为其他应用程序受到了影响。但现在我已经重新阅读,我想我错了!所以我想这只是关于一个应用程序跨设备的一致性是否胜过了一台设备上很多应用程序的一致性呢?-)。 – Stochastically

+0

@随机耶稣相信我,我可以同情。我知道,有时候设计上的考虑会让你对强调默认行为感到强烈,但它通常不值得被黑客利用。 99%的时间,除非你有一个非常非常好的理由,否则你最好只用默认设置 - 即使这样,在引入不稳定的黑客等方面你也在进行艰苦的斗争。 – LuxuryMode