如何在安卓应用程序的选项菜单中对菜单项进行排序?

5
我已经创建了一个包含多个菜单项的选项菜单。但是添加时,菜单项的顺序并非如所期望。
为了保证菜单项按照我们期望的顺序显示,需要在创建后进行排序操作。但我在Android开发文档中搜索后,未找到任何方法实现此操作(或者我没有找到)。
有没有任何解决方案以达到此目的?请给予建议。
感谢!
以下是一些示例代码:
public boolean onCreateOptionsMenu(Menu menu) {

    menu.add("menuItem1");

    menu.add("menuItem2");

    // after this I want to sort the items

    ArrayList<MenuItem> list = new ArrayList<MenuItem>();

    for(int i = 0; i < menu.size(); i ++) {
        list.add(menu.getItem(i));
    }

    Collections.sort(list, new SampleComparator());

    // But then I don't know how to add the sorted list of menu items back
}                
2个回答

9
你可以使用android:orderInCategory属性或者Menu.add方法的order参数来调整菜单项的显示顺序。除此之外,我认为没有其他方法来对菜单项进行排序。另外,我想知道哪种类型的菜单需要这样做——可能最好使用不同的UI元素。

关于需要排序的菜单类型:我们有一个复合框架,将大型活动类中的事物划分为组件。对于菜单部分,每个组件将负责创建和添加一个菜单项。但由于不同的组件是并行添加到菜单中的,所以顺序不能保证,这就是我在这里尝试解决的问题。 - Linghui
我明白了,那么 orderInCategory 或者 order 参数应该可以起到作用... 它们控制最终的显示顺序。 - Roman Nurik
当你的菜单由多个片段组成时,这非常有用! - Aron Lorincz

2
你应该在添加项目时像这样进行排序:

     menu.add (int groupId, int itemId, int order, CharSequence title)

请参见参考文献


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接