如何移动操作栏图标自动溢出图标?

时间:2014-03-13 17:01:25

标签: android menu android-actionbar icons

我知道两种显示操作栏图标的方法。我的最小sdk是14,目标是sdk 19.我正在用android 4.2进行调试。

第一个

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

    <item
        android:id="@+id/mPre"
        android:icon="@drawable/ic_action_previous_item"
        android:showAsAction="always"
        android:title="Previous"/>
    <item
        android:id="@+id/mNext"
        android:icon="@drawable/ic_action_next_item"
        android:showAsAction="ifRoom"
        android:title="Next"/>
    <item
        android:id="@+id/mShare"
        android:icon="@drawable/ic_action_share"
        android:showAsAction="ifRoom"
        android:title="Share"/>
    <item
        android:id="@+id/mFb"
        android:icon="@drawable/fb"
        android:showAsAction="ifRoom"
        android:title="Facebook"/>
    <item
        android:id="@+id/mhelp"
        android:icon="@drawable/ic_action_help"
        android:showAsAction="ifRoom"
        android:title="Help"/>

</menu>

这将动态显示图标(考虑操作栏的空间为2或3)。但问题是,这不会在溢出图标中显示额外的菜单。当我触摸手机菜单栏时,会出现额外的菜单,但我想要溢出图标中的额外菜单。

解决方案我的第二个代码。

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

    <item
        android:id="@+id/mPre"
        android:icon="@drawable/ic_action_previous_item"
        android:showAsAction="always"
        android:title="Previous"/>
    <item
        android:id="@+id/mNext"
        android:icon="@drawable/ic_action_next_item"
        android:showAsAction="always"
        android:title="Next"/>
    <item
        android:id="@+id/mMore"
        android:icon="@drawable/ic_action_overflow"
        android:showAsAction="always"
        android:title="More">
        <menu>
            <item
                android:id="@+id/mShare"
                android:icon="@drawable/ic_action_share"
                android:showAsAction="ifRoom"
                android:title="Share"/>
            <item
                android:id="@+id/mFb"
                android:icon="@drawable/fb"
                android:showAsAction="never"
                android:title="Facebook"/>
            <item
                android:id="@+id/mhelp"
                android:icon="@drawable/ic_action_help"
                android:showAsAction="never"
                android:title="Help"/>
        </menu>
    </item>

</menu>

这段代码的问题并不是真正的动态。我总是在这里显示两个图标并将其他图标放在溢出图标中,这个溢出图标不是真正的溢出图标。

现在我想要什么? 我希望如果我有五个菜单,菜单会在操作栏中显示,其余的图标会自动存储在溢出图标中。

我希望你们能解决我的问题。请帮我。提前谢谢。

2 个答案:

答案 0 :(得分:0)

我认为你需要使用这个

 android:showAsAction="ifRoom|withText"

参数showAsAction决定图标的显示位置

请参阅此linkdocumentation

答案 1 :(得分:0)

如果我理解正确,您希望操作栏图标始终显示在溢出上?如果是这种情况,您可以尝试以下方法:

<item
        android:id="@+id/action_settings"
        android:title="Test"
        app:showAsAction="never" />