由于设计需要,我不能使用Action Bar。 使用旧菜单按钮这并不重要,因为所有菜单命令都显示在特定菜单中,不幸的是,某些设备如Nexus 4没有菜单按钮,用户无法访问菜单功能。
所以我想要包含一个我的个人按钮,其功能类似于操作栏(或物理菜单按钮)右上角的按钮,自动获取OptionsMenu中的所有命令,但我不知道怎么办这没有为菜单和我的自定义按钮菜单单独重新定义每个命令的按钮。
有人可以帮助我吗?
答案 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)
因此,首先我知道您应该使用您的设计内容,但对于新应用程序来说,使用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屏幕:
希望这有帮助!
<强> P.S 即可。再说一遍,构建应用程序时,您应该考虑使用最新的设计指南和编码方法。