2

当我尝试将操作栏中的一个项目设置为始终可见并将另外 4 个图标设置为具有以下布局的下拉项目时,我遇到了问题:

 <?xml version="1.0" encoding="utf-8"?>
 <menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/search_movies"
        android:icon="@drawable/action_search"
        android:showAsAction="always"
        android:title="Search"/>
    <item
        android:id="@+id/movies"
        android:icon="@drawable/action_video"
        android:showAsAction="collapseActionView"
        android:title="Movies"/>
    <item
        android:id="@+id/theaters"
        android:icon="@drawable/action_location_map"
        android:showAsAction="collapseActionView"
        android:title="Theaters"/>
    <item
        android:id="@+id/preferences"
        android:icon="@drawable/action_settings"
        android:showAsAction="collapseActionView"
        android:title="Preferences"/>
    <item
        android:id="@+id/contact"
        android:icon="@drawable/action_about"
        android:showAsAction="collapseActionView"
        android:title="Contact"/>

    </menu> 

结果只是显示的第一个项目,其余的不可见,甚至不作为下拉列表。这是使用 ActionBarSherlock 和 2.3 Android 设备。

问题是,我怎样才能让图标遵循这个布局:

在此处输入图像描述

编辑:

我遇到的问题是,当您将操作栏与具有“菜单”硬件按钮的设备一起使用时,3 点下拉菜单不会显示,只有当您按下菜单硬件按钮时才会显示其他 4 个项目。有谁知道这种行为是否可以修改?

4

2 回答 2

1

嗯,也许我误解了,但是如果您希望将剩余的四个项目放入溢出操作菜单(3 点图标),那么使用android:showAsAction="never"而不是"collapseActionView"应该这样做。

...尝试了几种方法,但这成功了: 在 ABS 中强制溢出菜单

于 2013-04-26T02:06:49.383 回答
1

我遇到了同样的问题,我的解决方案很简单。(我没有使用 HoloEverywhere。)

这个想法来自 ABS 示例项目,它的下拉菜单也可以通过使用子菜单显示在 4.0 之前的设备上。所以,我的想法是使用子菜单来伪装 3 点图标。这是代码:

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    SubMenu sub = menu.addSubMenu("More");
    sub.getItem().setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
    sub.getItem().setIcon(R.drawable.ic_menu);

    getSupportMenuInflater().inflate(R.menu.activity_main, sub);

    return true;
}

由于“更多”菜单没有 MenuItem.SHOW_AS_ACTION_WITH_TEXT 属性,因此“更多”(或您命名的任何名称)实际上不会显示在操作栏上。唯一显示的图标 R.drawable.ic_menu 可以从名为“abs__ic_menu_moreoverflow_normal_holo_dark.png”的 ABS 源代码 res/drawable-xxdpi 文件夹中复制,也就是所谓的 3 点图标。而 R.menu.activity_main 是您的菜单 xml。

有用!

于 2013-05-17T12:07:28.100 回答