Galaxy Nexus(Android 4.1)上的显示选项菜单按钮

Galaxy Nexus(Android 4.1)上的显示选项菜单按钮,android,galaxy-nexus,Android,Galaxy Nexus,我正在应用程序中使用“选项”菜单。但当我在Galaxy Nexus上安装应用程序时,我看不到选项菜单,因为默认情况下它没有选项菜单按钮。如何仅在Galaxy Nexus应用程序中显示选项菜单按钮?对于其他手机,这很好,我可以获得选项菜单。android 3.x版(蜂巢)停止了选项菜单。因此,在最新的手机上不强制显示选项菜单按钮。所以去行动吧。您可以使用Sherlock ActionBar库来支持所有平台中的操作栏 更新:用户ActionBarCompat您需要考虑为什么需要“选项”按钮-这是一种

我正在应用程序中使用“选项”菜单。但当我在Galaxy Nexus上安装应用程序时,我看不到选项菜单,因为默认情况下它没有选项菜单按钮。如何仅在Galaxy Nexus应用程序中显示选项菜单按钮?对于其他手机,这很好,我可以获得选项菜单。

android 3.x版(蜂巢)停止了选项菜单。因此,在最新的手机上不强制显示选项菜单按钮。所以去行动吧。您可以使用
Sherlock ActionBar
库来支持所有平台中的操作栏


更新:用户ActionBarCompat

您需要考虑为什么需要“选项”按钮-这是一种旧的、糟糕的模式,它已经被更好的
ActionBar
所取代

但出于客户的原因,您可能需要它(比如我需要为客户保留它)。如果是这样的话,那么你可以按照我下面的建议去做(从错误地提到“动作栏”的原文中略加编辑)


您可以将
构建目标设置为ICS之前的版本(即API 13/3.2之前的版本)


这将使系统使用兼容模式设置,在手机底部的按钮栏中插入一个
溢出
图标-这将提供您想要的功能。例如,按下此按钮的响应与按下三星Galaxy S2上的“菜单”按钮的响应相同


在这里,您可以看到兼容性“选项”按钮,以及按下时显示的菜单:


注: 正如其他评论者提到的,你应该考虑更好的选择<代码> ActualBar < /C>模式。如果您想要向后兼容,那么我推荐Action Bar Sherlock库

但是,如果您正在寻找一个快速解决方案,或者客户机负担不起一个大的重构来移动到操作栏模式,那么这就是解决方法。

如果您使用,则选项菜单将替换为溢出。 如果没有,您必须自己实现一个按钮,在您自己的应用程序中的某个地方

菜单按钮(也称为兼容性菜单)仅在针对API 13或更低版本的应用程序的系统栏中显示

下面是一种检查设备是否有硬件菜单键的方法

// Menu key
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
    hasPermanentMenuKey = hasPermanentMenuKey(context.getApplicationContext());
}
else {
    // No way to know for sure...
    // All devices before Honeycomb should have a menu key. 
    // Honeycomb device usually don't have one
    hasPermanentMenuKey = Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB;
}

@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
private boolean hasPermanentMenuKey(Context context) {
    return ViewConfiguration.get(context).hasPermanentMenuKey();
}
//菜单键
if(Build.VERSION.SDK\u INT>=Build.VERSION\u代码.冰淇淋\u三明治){
hasPermanentMenuKey=hasPermanentMenuKey(context.getApplicationContext());
}
否则{
//没办法确定。。。
//蜂巢之前的所有设备都应该有一个菜单键。
//蜂窝设备通常没有
hasPermanentMenuKey=Build.VERSION.SDK\u INT
在Android 3.0中,谷歌从使用专用菜单键切换到使用
操作栏来实现菜单功能。如果构建目标为3.0或更高版本,则菜单将默认使用
操作栏

如果手机上有功能表键,则通常由操作栏中的三个点图标显示的任何超车选项都将与功能表按钮一起显示。如果手机上没有功能表键,则所有选项都将显示在操作栏上。由于菜单键即将消失,因此建议您使用
ActionBar
类来创建3.0及更高版本的菜单

现在,在没有菜单键的新平台上运行的旧应用程序将在“最近的应用程序”按钮旁边生成一个假菜单键。此临时菜单键仅在构建目标为2.3.4或更低版本时出现,因为它仅用于向后兼容。(编辑:构建目标应小于或包括API 13)


在您的情况下,您应该使用
操作栏
作为您的菜单,因为您是针对较新版本的Android构建的。如果您担心向后兼容性,那么您可以始终利用ActionBarSherlock之类的库在较旧的平台上使用操作栏。

您的构建目标是什么?Jelly Bean 4.1及以上版本,但是您不能使用ICS或Jelly Bean My愉悦添加的任何优秀功能。如果答案符合您的需要,请务必接受,以便其他人可以从中受益。事实证明@nicopico是正确的,CMoS按钮可用于多达13(3.2)个构建目标,而不仅仅是多达8(2.3.4)个构建目标。我喜欢兼容性菜单的名称。从现在起我将使用这个。
// Menu key
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
    hasPermanentMenuKey = hasPermanentMenuKey(context.getApplicationContext());
}
else {
    // No way to know for sure...
    // All devices before Honeycomb should have a menu key. 
    // Honeycomb device usually don't have one
    hasPermanentMenuKey = Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB;
}

@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
private boolean hasPermanentMenuKey(Context context) {
    return ViewConfiguration.get(context).hasPermanentMenuKey();
}