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

Bab*_*abu 28 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)
Run Code Online (Sandbox Code Playgroud)

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

的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"              
        >
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

我正在使用本教程,并试图在Split Action Bar中创建图6:Action项和Overflow菜单

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

现在每当我点击模拟器中的菜单按钮,然后我得到休息菜单项 ....

Aks*_*wal 57

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

你必须使用

android:showAsAction="never"
Run Code Online (Sandbox Code Playgroud)

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

  • 在某些设备上(我在Galaxy Tab 3,OS 4.2.2上进行了测试)它会导致隐藏项仅在"菜单"按钮上单击 (3认同)

ASM*_*RTI 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();
   }
 }
Run Code Online (Sandbox Code Playgroud)

  • 这是一个黑客......我肯定不会用它.接受的答案应该是Akshat Agarwal的 (21认同)

Rin*_*ino 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>
Run Code Online (Sandbox Code Playgroud)