我注意到,在我的应用程序中,当我为没有硬件菜单按钮的新设备添加菜单时,它会将三个点添加到操作栏。但是,我在某些应用程序上看到您实际上可以将这三个点移到底部(在软件导航上)如何实现?如果这有所作为,我也在使用 actionbarsherlock。
问问题
5122 次
2 回答
7
您可以通过设置targetSdk
低于 14 来“实现”这一点。我说“实现”,因为这是不好的做法。对于具有软件键的设备,只要您使用带有 ActionBar 的主题,它就会在 ActionBar 上显示菜单。如果您使用的主题没有 ActionBar(非 Holo),它将显示三个点。
三个点是讨厌的。
三个点是邪恶的。
三个点必须。是。根除。
简而言之,我会避免它。:)
另见:耻辱的菜单按钮
于 2012-10-26T19:20:51.763 回答
1
所以,事实证明这很简单,我最近在我的应用程序中实现了。
需要在溢出菜单中显示的项目,将它们嵌套在一个菜单项下,如下所示:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/empty"
android:orderInCategory="101"
android:showAsAction="always"
android:icon="@drawable/ic_action_overflow">
<menu>
<item
android:id="@+id/action_settings"
android:orderInCategory="96"
android:showAsAction="never"
android:title="@string/menu_settings"
android:icon="@drawable/ic_action_settings"/>
<item
android:id="@+id/action_share"
android:orderInCategory="97"
android:showAsAction="never"
android:title="@string/menu_share"
android:icon="@drawable/ic_action_share"/>
<item
android:id="@+id/action_rate"
android:orderInCategory="98"
android:showAsAction="never"
android:title="@string/menu_rate"
android:icon="@drawable/ic_action_important"/>
<item
android:id="@+id/action_feedback"
android:orderInCategory="99"
android:showAsAction="never"
android:title="@string/menu_feedback"
android:icon="@drawable/ic_action_edit"/>
</menu>
</item>
</menu>
现在,编辑主活动文件,如下所示:
package com.example.test;
//all your import statements go here
Menu mainMenu=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); }
@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);
mainMenu=menu;
return true; }
//Menu press should open 3 dot menu
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode==KeyEvent.KEYCODE_MENU) {
mainMenu.performIdentifierAction(R.id.empty, 0);
return true; }
return super.onKeyDown(keyCode, event); }
于 2013-11-26T15:09:51.730 回答