29

我正在编写一个 Android 应用程序,我试图在其中向 ActionBar 显示溢出菜单项

使用这个很棒的教程链接:http ://wptrafficanalyzer.in/blog/adding-action-items-and-overflow-menu-items-to-action-bar-in-android/

问题:

Not getting Overflow Menu Items (Icon)

请参阅下面的屏幕截图以获得更清晰的信息: 在此处输入图像描述

清单.xml:

<uses-sdk android:minSdkVersion="14" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" 
        android:uiOptions="splitActionBarWhenNarrow"              
        >

项目.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
    android:id="@+id/phone"
    android:title="@string/phone"
    android:icon="@drawable/phone"
    android:showAsAction="ifRoom|withText"
/>

<item
    android:id="@+id/computer"
    android:title="@string/computer"
    android:icon="@drawable/computer"
    android:showAsAction="ifRoom|withText"
/>

<item
    android:id="@+id/gamepad"
    android:title="@string/gamepad"
    android:icon="@drawable/gamepad"
    android:showAsAction="ifRoom|withText"
/>

<item
    android:id="@+id/camera"
    android:title="@string/camera"
    android:icon="@drawable/camera"
    android:showAsAction="ifRoom|withText"
/>

<item
    android:id="@+id/video"
    android:title="@string/video"
    android:icon="@drawable/video"
    android:showAsAction="ifRoom|withText"
/>

<item
    android:id="@+id/email"
    android:title="@string/email"
    android:icon="@drawable/email"
    android:showAsAction="ifRoom|withText"
/>
 </menu>

我正在使用本教程,并尝试制作图 6:拆分操作栏中​​的操作项和溢出菜单

请帮我向 ActionBar 显示溢出菜单项 (ICON)

现在,每当我在模拟器中单击菜单按钮时,我都会得到休息菜单项....

4

7 回答 7

58

只是说如果您的设备有一个菜单按钮,溢出图标将不会显示,在较新的手机上,溢出按钮将显示。我不会推荐 ASMUIRTI 的答案,因为它是一个糟糕的 hack,它破坏了与平台上其他应用程序的一致性。

你必须使用

android:showAsAction="never"

并让 android 设备决定该设备是否需要溢出菜单。

于 2013-10-28T15:45:05.903 回答
47

要在操作栏中显示三个点图标,只需在 OnCreate() 中使用以下方法:

   private void getOverflowMenu() {

    try {
       ViewConfiguration config = ViewConfiguration.get(this);
       Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
       if(menuKeyField != null) {
           menuKeyField.setAccessible(true);
           menuKeyField.setBoolean(config, false);
       }
   } catch (Exception e) {
       e.printStackTrace();
   }
 }
于 2013-03-19T07:22:12.760 回答
12

这可能是另一种解决方法,这对我很有帮助。保留一个带有三个点的可绘制对象,并将其作为菜单项。

 <menu xmlns:android="http://schemas.android.com/apk/res/android" >


<item
    android:id="@+id/saveDetails"
    android:showAsAction="always"
    android:title="@string/save"/>

<item
    android:id="@+id/menu_overflow"
    android:icon="@drawable/dts"
    android:orderInCategory="11111"
    android:showAsAction="always">
    <menu>
        <item
            android:id="@+id/contacts"
            android:showAsAction="never"
            android:title="Contacts"/>


        <item
            android:id="@+id/service_Tasks"
            android:showAsAction="never"
            android:title="Service Tasks"/>


        <item
            android:id="@+id/charge_summary"
            android:showAsAction="never"
            android:title="Charge Summary"/>


        <item
            android:id="@+id/capture_signature"
            android:showAsAction="never"
            android:title="Capture Signature"/>
    </menu>
</item>

 </menu>
于 2014-04-04T06:26:43.327 回答
1

如果我正确理解您的问题并且您想在操作栏上显示所有图标,请在菜单项中更改此参数

android:showAsAction="ifRoom|withText"

对此

android:showAsAction="always"
于 2013-03-19T06:31:13.413 回答
1

如果您从支持库中使用,为了在操作栏中显示菜单项,您必须在 xml 中使用以下语法:

yourappname:showAsAction="ifRoom|withText"
于 2014-01-26T05:35:58.823 回答
0

在 AndroidManifest.xml 之间添加

android:theme="@android:style/Theme.Holo.Light"

在您的应用程序中添加操作栏。

之后,转到 menu.xml 并添加以下内容

xmlns:tools="http://schemas.android.com/tools

之间最后在每个项目中添加

android:showAsAction="always"
tools:ignore="AppCompatResource"
于 2015-03-14T16:24:14.390 回答
0

具有菜单硬件按钮的电话在单击硬件按钮时会显示额外的菜单项。没有硬件菜单按钮的较新手机会自动将溢出菜单图标添加到操作栏。额外的菜单项是那些将“showAsAction”属性设置为从不的菜单项。

于 2014-09-11T18:34:54.100 回答