图标在操作栏上的优先级(保持项目顺序)

时间:2015-05-27 07:01:44

标签: android android-actionbar

如果空间有限,我正在尝试控制显示哪些操作栏项目,并在此问题中尝试了解决方案并回答:Icons priority on action bar

除了我想以与优先级不同的方式保持图标的顺序之外,一切正常,而上述解决方案导致项目被重新排序。有没有办法为项目显示设置优先级,而不改变项目在操作栏中显示的顺序?

我已经尝试改变xml中项目的顺序,这对渲染项目的顺序没有影响(没有orderInCategory,更改文件中的顺序确实会导致项目顺序发生变化如同渲染)。

我正在反对ICS。

menu.xml文件

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/action_edit"
        android:icon="@android:drawable/ic_menu_edit"
        android:title="@string/action_edit"
        android:showAsAction="ifRoom"
        android:orderInCategory="1"
        />

    <item
        android:id="@+id/action_undo"
        android:icon="@android:drawable/ic_menu_revert"
        android:title="@string/action_undo"
        android:showAsAction="ifRoom"
        android:orderInCategory="2"
        />

    <item
        android:id="@+id/action_delete"
        android:icon="@android:drawable/ic_menu_delete"
        android:title="@string/action_delete"
        android:showAsAction="ifRoom"
        android:orderInCategory="3"
        />

    <!-- I want this item to be on the right, 
    but shown in preference to any other items; 
    setting it's orderInCategory to 0 ensures that it 
    is shown in preference to other items, 
    but always places it on the left -->
    <item
        android:id="@+id/action_addnew"
        android:icon="@android:drawable/ic_menu_add"
        android:title="@string/action_addnew"
        android:showAsAction="ifRoom"
        android:orderInCategory="0"
        />
</menu>

感谢。

4 个答案:

答案 0 :(得分:2)

这些项目是从从右到左顺序放置的,所以通过重新排列项目,它可以提供帮助

<item
    android:id="@+id/action_addnew"
    android:icon="@android:drawable/ic_menu_add"
    android:title="@string/action_addnew"
    android:showAsAction="always"
    android:orderInCategory="0"
    />
<menu>
    <item
        android:id="@+id/action_edit"
        android:icon="@android:drawable/ic_menu_edit"
        android:title="@string/action_edit"
        android:showAsAction="ifRoom"
        android:orderInCategory="1"
    />

    <item
        android:id="@+id/action_undo"
        android:icon="@android:drawable/ic_menu_revert"
        android:title="@string/action_undo"
        android:showAsAction="ifRoom"
        android:orderInCategory="2"
    />

    <item
        android:id="@+id/action_delete"
        android:icon="@android:drawable/ic_menu_delete"
        android:title="@string/action_delete"
        android:showAsAction="ifRoom"
        android:orderInCategory="3"
    />
</menu>

答案 1 :(得分:0)

android:orderInCategory

此文件从右到左工作,因此您需要根据记住这一点来修改代码。

答案 2 :(得分:0)

我从阅读你的问题得到的是你想要显示的action_addnew应该出现在右边&amp;它应该总是出现在每个人身上。
试试这个

    <menu xmlns:android="http://schemas.android.com/apk/res/android">
        <item
            android:id="@+id/action_edit"
            android:icon="@android:drawable/ic_menu_edit"
            android:title="@string/action_edit"
            android:showAsAction="ifRoom"
            />

        <item
            android:id="@+id/action_undo"
            android:icon="@android:drawable/ic_menu_revert"
            android:title="@string/action_undo"
            android:showAsAction="ifRoom" />

        <item
            android:id="@+id/action_delete"
            android:icon="@android:drawable/ic_menu_delete"
            android:title="@string/action_delete"
            android:showAsAction="ifRoom"
            />

        <item
            android:id="@+id/action_addnew"
            android:icon="@android:drawable/ic_menu_add"
            android:title="@string/action_addnew"
            android:showAsAction="always"
            />
    </menu>

答案 3 :(得分:0)

从左到右给出第一项

android:orderInCategory="0"

和第二项

android:orderInCategory="1"

等等。