0

我在 android 中使用操作栏,但它没有显示溢出栏。我正在尝试作为教程,但它没有工作,尽管我做同样的错误是什么?我只想回家显示而其他人在溢出。这里是菜单代码我正在使用操作栏在 android 中,但它没有显示溢出栏。我正在尝试作为教程,但它没有工作,尽管我做了同样的错误?我只想回家显示,而其他人在溢出。这里是菜单代码

<item android:id="@+id/Homebar"
    android:title="Home"
    android:orderInCategory="1"
    android:showAsAction="ifRoom"
    />
<item android:id="@+id/infobar"
    android:title="Info"
    android:orderInCategory="2"
    android:showAsAction="ifRoom"
    />
<item android:id="@+id/servicebar"
    android:title="Services"
    android:orderInCategory="2"
    android:showAsAction="ifRoom"
    />
<item android:id="@+id/onlinetoolsbar"
    android:title="Online tools"
    android:orderInCategory="2"
    android:showAsAction="ifRoom"
    />
<item android:id="@+id/mediacenterbar"
    android:title="Media center"
    android:orderInCategory="2"
    android:showAsAction="ifRoom"
    />

4

4 回答 4

6

You are probably using a device with a dedicated menu button, or an emulator with a dedicated menu button. Prior to Android 4.4, Android won't show an overflow button if the devices has a dedicated menu button. If you press the menu button, the overflow menu should appear.

Google changed this behaviour in Android 4.4 Kitkat, and now all devices will show the overflow button. If you're using the emulator, try testing on the Android 4.4 emulator. If you're testing on a real device with a dedicated menu button, use that button to 'summon' the overflow menu.

EDIT: To get a custom submenu/overflow menu, you have to create a seperate menu inside a menuitem. Like this:

 <item android:id="@+id/Homebar"
    android:title="Home"
    android:orderInCategory="1"
    android:showAsAction="ifRoom"
    >
    <menu>
     <item android:id="@+id/infobar"
         android:title="Info"
        android:orderInCategory="2"
         android:showAsAction="ifRoom"
         />
     <item android:id="@+id/servicebar"
         android:title="Services"
         android:orderInCategory="2"
         android:showAsAction="ifRoom"
         />
     <item android:id="@+id/onlinetoolsbar"
         android:title="Online tools"
         android:orderInCategory="2"
         android:showAsAction="ifRoom"
         />
     <item android:id="@+id/mediacenterbar"
         android:title="Media center"
         android:orderInCategory="2"
         android:showAsAction="ifRoom"
         />
     </menu>  
</item>
于 2014-01-20T18:29:50.103 回答
1

我希望下面的代码对大多数设备有用,用于显示带有溢出菜单的操作栏并使用:

下面的方法很容易在大多数设备中显示操作栏溢出菜单,您可以使用 > 3.0 版本。

我检查了这段代码在 Android 4.0、4.1、4.2、4.3 版本中是否正常工作。

MainActivity.java

package com.example.actionbaroverflowmenu;

import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.ActionBar;
import android.app.Activity;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.WindowManager;

public class MainActivity extends Activity {
private Menu mainMenu;

@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.

    super.onCreateOptionsMenu(menu);

    getMenuInflater().inflate(R.menu.main, menu);

    mainMenu = menu;
    return true;
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub

    if(event.getAction() == KeyEvent.ACTION_DOWN){
        switch (keyCode) {
        case KeyEvent.KEYCODE_MENU:
            mainMenu.performIdentifierAction(R.id.action_overflow, 0);
            return true;
        }
    }

    return super.onKeyDown(keyCode, event);
}

}

菜单/main.xml

<item
    android:id="@+id/action_locate"
    android:icon="@drawable/ic_action_locate"
    android:orderInCategory="200"
    android:showAsAction="always"/>
<item
    android:id="@+id/action_refresh"
    android:icon="@drawable/ic_action_refresh"
    android:orderInCategory="300"
    android:showAsAction="always"/>
<item
    android:id="@+id/action_overflow"
    android:icon="@drawable/ic_action_overflow"
    android:menuCategory="container"
    android:orderInCategory="400"
    android:showAsAction="always"
    android:visible="true">
    <menu>
        <item
            android:id="@+id/action_refresh"
            android:icon="@drawable/ic_action_refresh"
            android:menuCategory="container"
            android:orderInCategory="100"
            android:showAsAction="always"
            android:title="Refresh"
            android:visible="true"/>
        <item
            android:id="@+id/action_search"
            android:icon="@drawable/ic_action_search"
            android:menuCategory="container"
            android:orderInCategory="200"
            android:showAsAction="always"
            android:title="Search"
            android:visible="true"/>
        <item
            android:id="@+id/action_settings"
            android:icon="@drawable/ic_action_settings"
            android:orderInCategory="300"
            android:showAsAction="always"
            android:title="@string/action_settings"/>

        <item
            android:id="@+id/action_help"
            android:icon="@drawable/ic_action_help"
            android:orderInCategory="400"
            android:showAsAction="always"
            android:title="Help"/>

        <item
            android:id="@+id/action_about"
            android:icon="@drawable/ic_action_about"
            android:orderInCategory="500"
            android:showAsAction="always"
            android:title="About"/>

    </menu>
</item>

从以下链接下载操作栏图标包:下载图标包

您必须将图标放在可绘制文件夹中,以便在 menu/main.xml 文件中使用

于 2014-07-16T17:02:27.363 回答
0

文档中阅读:

动作溢出

操作栏中的操作溢出可让您访问应用中不常用的操作。溢出图标 仅出现在没有菜单硬件键的手机上。当用户按下键时,带有菜单键的电话会显示操作溢出 。`

所以这不是您的应用程序的奇怪行为,这是 android 的正常行为,具体取决于您showAsActionmenu.xml. 它还取决于屏幕尺寸和方向。

顺便说一句,有些人使用hack来强制显示溢出菜单,但正如我所说,这是一个 hack,所以对您的应用程序不利,并且会导致您最终在其他设备/版本中出现错误。看看这里以更好地理解。

如果您真的想在您的应用程序上使用它而不使用 hack,请查看此解决方案

于 2014-01-20T19:03:34.857 回答
-1

只有那些项目显示在溢出菜单中,其 android:showAsAction 设置为“从不”。您已为每个项目将其设置为“ifRoom”。

于 2014-07-13T23:29:49.683 回答