5

我正在尝试在我的测试应用程序中创建菜单选项。

当我将清单中的主题设置为默认值时,我能够看到菜单(菜单显示在顶部)。如果我将清单中的主题设置为 NoTitleBar。我看不到菜单选项?

我想在清单中设置主题“NoTitleBar”时获取菜单。

如何解决?

以下是我在测试应用程序中使用的东西:

与清单:

  <uses-sdk
      android:minSdkVersion="8"
    android:targetSdkVersion="17" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar" >
    <activity
        android:name="com.ssn.menuoptions.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

</manifest>

菜单.xml

 <?xml version="1.0" encoding="utf-8"?>
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:id="@+id/menu_preferences"
      android:title="Preferences" /> 
 </menu>

Java 文件:

@Override
public boolean onCreateOptionsMenu(Menu menu) 
    {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

是否有可能得到这样的东西:

file:///C:/Users/Koushik/Downloads/SahayaPictures/fHEQ8.png

如何使菜单显示出来?

谢谢!

4

4 回答 4

2

在 Activity.setContentView() 下添加以下代码;

 setContentView(R.layout.activity_detail);
    // set option menu if has no hardware menu key
    boolean hasMenu = ViewConfiguration.get(this).hasPermanentMenuKey();
    if(!hasMenu){
        //getWindow().setFlags(0x08000000, 0x08000000);
        try {
            getWindow().addFlags(WindowManager.LayoutParams.class.getField("FLAG_NEEDS_MENU_KEY").getInt(null));
          }
          catch (NoSuchFieldException e) {
            // Ignore since this field won't exist in most versions of Android
          }
          catch (IllegalAccessException e) {
            Log.w("Optionmenus", "Could not access FLAG_NEEDS_MENU_KEY in addLegacyOverflowButton()", e);
          }
    }
于 2013-08-02T04:02:02.047 回答
1

如果您不想在应用程序中使用操作栏,则可以使用此处理程序设置一个按钮:

myButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View arg0) { openOptionsMenu(); }
});

现在myButton像菜单键一样工作。这是将全屏应用程序迁移到 4.x 的一种简单方法,但从长远来看,应该寻求更优雅的解决方案。

于 2014-07-18T15:26:40.650 回答
0

添加Android Manifest android:targetSdkVersion="10"

<uses-sdk
    android:targetSdkVersion="10" />
于 2013-12-02T09:41:22.000 回答
0

使用 notitlebar 主题会删除菜单按钮所在的操作栏。您可能必须制作一个自定义主题才能在其中包含您的菜单。如果你不做任何事情,你至少可以使用这个属性:android:showAsAction="Never"这样手机有菜单按钮的用户就可以用他们的按钮弹出菜单。

于 2013-07-16T03:06:33.803 回答