如何以与操作栏相同的方式在自定义按钮中获取Android菜单

时间:2013-07-02 18:00:07

标签: android android-actionbar

由于设计需要,我不能使用Action Bar。 使用旧菜单按钮这并不重要,因为所有菜单命令都显示在特定菜单中,不幸的是,某些设备如Nexus 4没有菜单按钮,用户无法访问菜单功能。

所以我想要包含一个我的个人按钮,其功能类似于操作栏(或物理菜单按钮)右上角的按钮,自动获取OptionsMenu中的所有命令,但我不知道怎么办这没有为菜单和我的自定义按钮菜单单独重新定义每个命令的按钮。

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您需要Button打开您的menu.xml或其他任何可能称之为的内容。如果是这样,您可以使用PopupMenu。请注意,这需要API >= 11。我必须创建自己的“ActionBar”来获得我需要的外观和功能,PopupMenu已经很好地完成了。这样,您就可以使R.menu.your_menu充气并拥有interfaces和允许您将其用作menu的方法。

我将我的功能放入BaseActivity,这是我所有其他Activities的超类,如果我需要某些override onMenuItemClick,我可以Activities {{1}} { {1}}。

如果我误解了你的需要,请告诉我。

答案 1 :(得分:0)

因此,首先我知道您应该使用您的设计内容,但对于新应用程序来说,使用ActionBarActionBarSherlock确实是更好的选择。但是为了给你的问题提供正确的答案,你应该先做一些事情,然后在主页和后退按钮旁边的底部系统栏中显示软件菜单按钮。

首先包括您的菜单:

    @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;
}

您需要更改的第二件事是AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.test"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="10" />
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen" >
        <activity
            android:name="com.example.test.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>

看看这一行:

<uses-sdk
    android:minSdkVersion="7"
    android:targetSdkVersion="10" />

这是魔术发生的地方。如果您将targetSdkVersion设置为大于10,则表示您的应用支持没有硬件菜单按钮的设备,并且可能使用ActionBar或其他方式。

如果您按上述方式执行所有操作,则可以使用Nexus4 / Nexus7屏幕:

enter image description here

希望这有帮助!

<强> P.S 即可。再说一遍,构建应用程序时,您应该考虑使用最新的设计指南和编码方法。