【问题标题】:What is orderInCategory in ActionBar menu item & why it is use for..?ActionBar 菜单项中的 orderInCategory 是什么以及它为什么用于..?
【发布时间】:2015-02-25 09:47:25
【问题描述】:

我正在处理操作菜单项及其溢出项,这是我的main_menu.xml

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

<item
    android:id="@+id/menu_search"
    android:icon="@drawable/search"
    android:title="@string/start_new_project"
    app:showAsAction="always" />
<item
    android:id="@+id/menu_dts_overflow"
    android:icon="@drawable/ic_action_overflow_round"
    android:orderInCategory="11111" 
    android:title="Service"
    app:showAsAction="always">
    <menu>
        <item
            android:id="@+id/menu_newProject"
            android:icon="@drawable/newproject"
            android:title="@string/start_new_project"
            app:showAsAction="never" />


        <item
            android:id="@+id/menu_help"
            android:icon="@drawable/help"
            android:title="Service Tasks"
            app:showAsAction="never" />


        <item
            android:id="@+id/menu_signOut"
            android:icon="@drawable/signout"
            android:title="@string/menusignout"
            app:showAsAction="never" />

    </menu>
</item>

我尝试构建一个搜索项和一个溢出项,您可以在上面的代码中看到它们。我是操作栏菜单项的新手,所以我尝试用谷歌搜索它并能够让它按照我的需要工作。

在这我还要知道一件事。

1. 什么是orderInCategory 以及一些数字以及它的用途..?

【问题讨论】:

  • 指定菜单项在溢出菜单或操作栏中的显示顺序
  • 数字代表什么..?
  • 如果使用 android:orderInCategory 属性,菜单中的所有项目都需要具有该属性。否则,任何没有该属性的项目都将被拉到顶部/前面。

标签: android android-actionbar android-menu


【解决方案1】:

android:orderInCategory 是一个整数属性,它指示菜单项在显示时在菜单中出现的顺序。

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

    <item
        android:id="@+id/menu_item_first"
        android:orderInCategory="1"
        android:showAsAction="never"
        android:title="@string/string_one"/>

    <item
        android:id="@+id/menu_item_second"
        android:orderInCategory="2"
        android:showAsAction="never"
        android:title="@string/string_two"/>

</menu>
  • ToolBar 中的菜单项从left 排列到right(或 startend 在 RTL 模式下)按升序排列(即 1,2,3 -&gt; 从左到右)。

  • Overflow menu 中的菜单项从top 排列到bottom 中 升序(即 1,2,3 -&gt; 从上到下)。

【讨论】:

  • 注意它可以从开始到结束来支持从右到左
【解决方案2】:

android:orderInCategory 实际上在两个方面有用。

1. 对于ActionBar 中的菜单项。 根据升序,项目将在 ActionBar 中从左到右显示。

2. 用于overflow 菜单中的菜单项。 溢出菜单项将根据您指定的升序从上到下显示。

【讨论】:

  • 当片段和活动有菜单项时也很有用。在我的情况下,我希望活动项目显示在片段项目下,并为所有活动项目提供 orderInCagegory 完成此操作。
【解决方案3】:

android:orderInCategory 值越高,优先级越低。

我里面有一个Activity和一个Fragment,两个都有选项菜单,项目编号是1和3。

如果我设置android:orderInCategory=0,则活动菜单在片段菜单上方,与我设置值之前的效果相同。

但是如果我设置android:orderInCategory=1,活动菜单在片段菜单下面,这就是我想要的。(我也测试了android:orderInCategory=5也测试了,还是一样的效果。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 2014-05-27
    • 2011-10-22
    相关资源
    最近更新 更多