动作栏中的三点动作溢出菜单?

时间:2012-10-26 19:00:15

标签: android

enter image description here我注意到在我的应用程序中,当我为没有硬件菜单按钮的新设备添加菜单时,它会向操作栏添加三个点。但是,我在一些应用程序上看到,您实际上可以将这三个点移动到底部(在软件导航上) 怎么能实现这一目标?如果有所作为,我也会使用actionbarsherlock。

2 个答案:

答案 0 :(得分:7)

你可以通过将targetSdk设置为低于14来“实现”这一点。我说“达到”,因为这是不好的做法。对于具有软件键的设备,只要您使用ActionBar的主题,它就会在ActionBar上显示菜单。如果你使用没有ActionBar(非Holo)的主题,它将显示三个点。

这三个点很讨厌 这三个点是邪恶的 这三个点必须。是。根除。

简而言之,我会避免它。 :)

另请参阅:Menu Button of Shame

答案 1 :(得分: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); }