如何在Android中向操作栏显示溢出菜单项

时间:2013-03-19 06:22:53

标签: android android-actionbar

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

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

问题:

Not getting Overflow Menu Items (Icon)

请参阅下面的屏幕截图以获得更清晰: enter image description here

的Manifest.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"              
        >

items.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)

现在每当我点击模拟器中的菜单按钮,我就会得到其余的菜单项 ....

7 个答案:

答案 0 :(得分:57)

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

你必须使用

android:showAsAction="never"

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

答案 1 :(得分:47)

要向Action Bar显示三个点图标,只需在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();
   }
 }

答案 2 :(得分: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>

答案 3 :(得分:1)

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

android:showAsAction="ifRoom|withText"

到这个

android:showAsAction="always"

答案 4 :(得分:1)

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

yourappname:showAsAction="ifRoom|withText"

答案 5 :(得分:0)

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

答案 6 :(得分: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"