【问题标题】:ActionBarSherlock collapseActionViewActionBarSherlock collapseActionView
【发布时间】:2013-06-17 22:20:13
【问题描述】:

当我尝试将操作栏中的一个项目设置为始终可见并将另外 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 个项目.有谁知道这种行为是否可以修改?

【问题讨论】:

    标签: android actionbarsherlock android-actionbar


    【解决方案1】:

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

    ...尝试了几种方法,但这成功了: Force overflow menu in ABS

    【讨论】:

    • 根据您的建议,我得到了相同的结果,只有一个图标可见,三点图标未显示。
    • 此活动getSupportMenuInflater().inflate(R.menu.yourMenuLayout, menu);onCreateOptionsMenu(Menu menu) 内的第一行是否是getSupportMenuInflater().inflate(R.menu.yourMenuLayout, menu);
    • 是的,我有那行,实际上它正在正确读取 menu.xml 文件,您可以在我的编辑中看到问题仅出现在具有“菜单”硬件按钮的设备中,当您单击该按钮,项目出现,但三点图标不可见。
    • 此线程中的第二个答案是否适用? Force overflow menu in ABS
    • 是的,这个答案非常有效,你能把这个添加到你的答案中,以便我可以将其标记为已接受吗?
    【解决方案2】:

    我遇到了同样的问题,我的解决方案很简单。 (我没有使用 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。

    有效!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-05
      • 2012-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多