【问题标题】:Why ActionbarSharelock shows only overflow icon even there are room为什么即使有空间,ActionbarSharelock 也只显示溢出图标
【发布时间】:2014-01-24 11:04:27
【问题描述】:

即使标题中有空间,我也无法在 ABS 中看到菜单项。问题是我在不同尺寸的设备上进行了测试,但在每种情况下我只能看到一个,那就是溢出菜单。

我正在使用onPrepareOptionsMenu 动态管理我的菜单,并且运行良好。(但不知道这个问题可能是onPrepareOptionsMenu 或其他原因发生的)。

查看差异:

第一种方法我以编程方式创建菜单并使用setShowAsAction() 设置该可见性。我也在某个地方找到了setShowAsActionflag(),我也尝试过。但在这种情况下,我无法在small screen 320*480 中看到溢出菜单。所以,这是我在编程方法中遇到的问题。

这是我的代码

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    // TODO Auto-generated method stu
    // TO Remove older menu otherwise that will apped menu each time.
    menu.clear();

    menu.add(Menu.NONE, MENU_SEARCH, Menu.NONE, "Search").setIcon(R.drawable.ic_search).setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);

    menu.add(Menu.NONE, MENU_SETTING, Menu.NONE, "Settings").setIcon(R.drawable.ic_action_settings)
        .setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);

    if (is_session_exist == 1) {
        menu.add(Menu.NONE, MENU_CHANGE_LOGIN, Menu.NONE, "Change Login").setIcon(R.drawable.ic_action_add_person)
            .setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);

        menu.add(Menu.NONE, MENU_LOGOUT, Menu.NONE, "Logout").setIcon(R.drawable.abs__ic_clear)
            .setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);


    } else {
        menu.add(Menu.NONE, MENU_LOGIN, Menu.NONE, "Login").setIcon(R.drawable.ic_action_add_person)
            .setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
    }
    return super.onPrepareOptionsMenu(menu);
}

第二种方法 我已经使用 XML 文件夹创建菜单并将所有属性设置在单独的文件中。现在我在onPrepareOptionsMenu 中调整该菜单,但在这种情况下,即使我设置了android:showAsAction="ifRoom|withText",我也只能在任何密度屏幕上看到溢出图标

这是我的 XML 代码。

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

    <item
        android:id="@+id/mainMenu"
        android:icon="@drawable/abs__ic_menu_moreoverflow_holo_dark"
        android:showAsAction="always">
        <menu>
            <item
                android:id="@+id/menu_search"
                android:icon="@drawable/ic_search"
                android:showAsAction="ifRoom|withText"
                android:title="Search"
                android:visible="true"/>
            <item
                android:id="@+id/menu_login"
                android:icon="@drawable/ic_action_add_person"
                android:showAsAction="ifRoom|withText"
                android:title="Login"
                android:visible="true"/>
            <item
                android:id="@+id/menu_change_login"
                android:icon="@drawable/ic_action_add_person"
                android:showAsAction="ifRoom|withText"
                android:title="Change Login"
                android:visible="false"/>
            <item
                android:id="@+id/menu_setting"
                android:icon="@drawable/ic_action_settings"
                android:showAsAction="ifRoom|withText"
                android:title="Setting"
                android:visible="true"/>
            <item
                android:id="@+id/menu_logout"
                android:icon="@drawable/abs__ic_clear"
                android:showAsAction="ifRoom|withText"
                android:title="Logout"
                android:visible="false"/>
        </menu>
    </item>

</menu>

我正在使用setVisible(false/true); 更改onPrepareOptionsMenu 中的菜单项

这里有一些我已经参考过的有用链接,但问题尚未解决。

Set android:showAsAction="ifRoom|withText" programmatically

How to add text to icons in ActionBar?

我不知道为什么会遇到这个问题。您的帮助和努力一定会感激不尽。

谢谢。

【问题讨论】:

    标签: android actionbarsherlock optionmenu


    【解决方案1】:

    我猜,对于屏幕分辨率为 320*480 的设备,您不会看到溢出图标,而是单击设备的菜单按钮,您可以获得如下图所示的其余菜单项:

    【讨论】:

    • 格栅捕捞。我从来没有注意到那件事。谢谢 :) 至少我的 java 编码工作得很好。 :)
    【解决方案2】:

    您有两个 menu (1) 嵌套

    <menu xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <item..
              ">
            <menu>
    

    应该都是单个菜单,去掉了溢出菜单项。它会自动显示。

    更新的菜单 xml

    <menu xmlns:android="http://schemas.android.com/apk/res/android" >
                <item
                    android:id="@+id/menu_search"
                    android:icon="@drawable/ic_search"
                    android:showAsAction="ifRoom|withText"
                    android:title="Search"
                    android:visible="true"/>
                <item
                    android:id="@+id/menu_login"
                    android:icon="@drawable/ic_action_add_person"
                    android:showAsAction="ifRoom|withText"
                    android:title="Login"
                    android:visible="true"/>
                <item
                    android:id="@+id/menu_change_login"
                    android:icon="@drawable/ic_action_add_person"
                    android:showAsAction="ifRoom|withText"
                    android:title="Change Login"
                    android:visible="false"/>
                <item
                    android:id="@+id/menu_setting"
                    android:icon="@drawable/ic_action_settings"
                    android:showAsAction="ifRoom|withText"
                    android:title="Setting"
                    android:visible="true"/>
                <item
                    android:id="@+id/menu_logout"
                    android:icon="@drawable/abs__ic_clear"
                    android:showAsAction="ifRoom|withText"
                    android:title="Logout"
                    android:visible="false"/>
         </menu>
    

    【讨论】:

    • 如果我删除它,那么我会遇到第一种方法的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 2019-05-14
    • 2016-05-14
    • 2011-11-05
    • 2018-12-22
    • 2021-10-05
    • 1970-01-01
    相关资源
    最近更新 更多