溢出内容未显示在操作栏中

4

我的操作栏中有5-6个项目。当我设置 ShowAsAction = "never" 时,这些项目会进入旧样式菜单,该菜单从屏幕底部弹出,而我想要在操作栏上显示三个点的图标。而且当我点击它时,菜单不会出现。

我的菜单文件 -

    <menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item 
     android:id="@+id/About"
     android:title="About"
     android:orderInCategory="1"
     android:showAsAction="always"/>


<item 
    android:id="@+id/Settings"
    android:title="settings"
    android:orderInCategory="2"
    android:showAsAction="always"/>

<item 
    android:id="@+id/item3"
    android:title="Item3"
    android:icon="@drawable/ic_launcher"
    android:orderInCategory="3"
    android:showAsAction="always"/>
<item 
    android:id="@+id/item4"
    android:title="Item3"
    android:icon="@drawable/ic_launcher"
    android:orderInCategory="4"
    android:showAsAction="always"/>

<item 
    android:id="@+id/item5"
    android:title="Item3"
    android:icon="@drawable/ic_launcher"
    android:orderInCategory="5"
    android:showAsAction="never"/>

<item 
    android:id="@+id/item6"
    android:title="Item3"
    android:icon="@drawable/ic_launcher"
    android:orderInCategory="6"
    android:showAsAction="never"/>

</menu>

2
你的设备上有一个实体菜单按钮吗? - codeMagic
是的,我有硬菜单按钮。 - Priyesh
3个回答

11

如果您的设备上有一个硬件菜单按钮,那么无法适应 ActionBar 的菜单选项将被放置在设备的菜单按钮上。 如果您的设备是较新的没有此按钮,则它们将放置在溢出菜单中(即三个竖点)

请参见创建选项菜单

我为自定义的 ActionBar 创建了一个自定义的 layout,以便在所有设备上具有相同的外观和功能。 如果这正是您想要的东西,您可以考虑做同样的事情。


不用谢。很抱歉这可能不是你想要的答案。 - codeMagic
谢谢你的回答,我已经花了很多时间寻找解决方案。我正在使用android-sherlockBar,并且我的设备上确实有菜单按钮。但是从其他应用程序中可以看到,即使我有这个按钮,也会显示三个点的菜单。 - idish
@idish 我对SherlockActionBar不是很熟悉,因为我从未使用过它,所以你可能可以通过该库获得你想要的内容。根据我阅读作者关于它的描述,我的理解是它只是一个短期解决方案,这就是为什么我决定自己创建“Action Bar”的原因。 - codeMagic

8

Android禁用在有物理菜单按钮的设备上显示溢出图标,但是对于仍然需要它的用户,这里提供一种解决方案:

将此功能添加到您的活动中:

private void forceShowActionBarOverflowMenu() {  
    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();  
    }  
}  

在您的活动的onCreate()方法中,设置布局后,最后加入"forceShowActionBarOverflowMenu();"。

5
将菜单嵌套如下所示,您将获得溢出图标和下拉菜单中的图标(如果您指定了)。

<item
    android:id="@+id/empty"
    android:icon="@drawable/ic_action_overflow"
    android:orderInCategory="101"
    android:showAsAction="always">
    <menu>
        <item
            android:id="@+id/action_show_ir_list"
            android:icon="@drawable/ic_menu_friendslist"
            android:showAsAction="always|withText"
            android:title="List"/>
    </menu>
</item>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接