由于设计需要,我无法使用操作栏。对于旧的菜单按钮,这并不重要,因为所有菜单命令都显示在特定菜单中,不幸的是,像 Nexus 4 这样的一些设备没有菜单按钮,用户无法访问菜单功能。
所以我想包括一个我的个人按钮,它的作用类似于操作栏右上角的按钮(或物理菜单按钮),自动获取 OptionsMenu 中的所有命令,但我不知道如果不重新定义我怎么能做到这一点每个命令的按钮分别用于菜单和我的自定义按钮菜单。
有人可以帮助我吗?
由于设计需要,我无法使用操作栏。对于旧的菜单按钮,这并不重要,因为所有菜单命令都显示在特定菜单中,不幸的是,像 Nexus 4 这样的一些设备没有菜单按钮,用户无法访问菜单功能。
所以我想包括一个我的个人按钮,它的作用类似于操作栏右上角的按钮(或物理菜单按钮),自动获取 OptionsMenu 中的所有命令,但我不知道如果不重新定义我怎么能做到这一点每个命令的按钮分别用于菜单和我的自定义按钮菜单。
有人可以帮助我吗?
如果我对你的理解正确,你想要一个Button
打开你的menu.xml
或你可能称之为的任何东西。如果是这样,您可以使用PopupMenu。请注意,这需要API >= 11
. 我必须创建自己的“ActionBar”来获得我需要的外观和功能,并且PopupMenu
效果很好。这使您可以膨胀R.menu.your_menu
并具有interfaces
允许您将其用作menu
.
我将我的功能放入BaseActivity
一个超类中,它是我所有其他的超类,如果我需要某些不同的功能,Activities
我可以。override
onMenuItemClick
Activities
如果我误解了您的需求,请告诉我。
所以,首先我知道你应该使用你的设计材料,但它确实是使用ActionBar
或ActionBarSherlock
用于新应用程序的更好选择。但是为了给您的问题提供正确的答案,您应该做一些事情,然后在底部系统栏中的主页和返回按钮旁边显示软件菜单按钮。
首先,一如既往地包括您的菜单:
@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 屏幕,如下所示:
希望这可以帮助!
附言。再说一遍,构建应用程序时,您应该考虑使用最新的可用设计指南和编码最佳实践。