Android ICS:如何检测设备是否具有“屏幕上的返回/主页按钮”(例如Galaxy Nexus)

11
我想知道是否有方法可以检测设备是否有“屏幕按钮”(例如Galaxy Nexus或ICS平板电脑)。
我的问题在于,在具有屏幕按钮的设备上,如果溢出,则会添加溢出按钮到操作栏,而不是其他设备上,因此我希望能够预测这种行为。
谢谢你的帮助。

2
只要用户可以访问溢出,你为什么要在意呢? - CommonsWare
CommonsWare是正确的,你为什么觉得需要预测这种行为呢? - adamp
蜂窝平板电脑也配备了“屏幕按钮”。 - MikeC
3
"需要保持一致性",这就是为什么你需要让事情保持原样。绝大多数用户没有同时拥有一个带有硬件菜单按钮的Android设备和一个没有硬件菜单按钮的Android设备。他们不关心另一种类型的设备的行为——他们希望他们的应用程序的行为和他们的其他所有应用程序一样。你就像那些认为他们的Android应用程序必须看起来完全相同于他们的iOS应用程序的人一样,却没有意识到极少有人会将两者并排比较而导致了糟糕的Android导航。 - CommonsWare
1
在具有硬菜单键的设备上,溢出不会显示出来,因为这些设备已经有了一个用于显示溢出的已知机制 - 菜单键。您不应该为了在不同设备的所有用户中实现像素完美的一致性而努力,而应该为了与同一设备上的其他应用程序保持一致而努力。Android 设备有许多硬件变化:屏幕大小、对硬键盘/软键盘的依赖等。您不希望平板电脑用户使用为手机设计的 UI,只是为了与手机用户保持一致,就像您不希望溢出按钮+硬菜单键一样。 - adamp
显示剩余4条评论
1个回答

11

从您的活动中,您可以运行以下命令:

boolean hasNavigationBar = false;

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH)
{
    hasNavigationBar = !ViewConfiguration.get(context).hasPermanentMenuKey();
}    
else 
{
    hasNavigationBar = false;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接