创建一个选项菜单

Create an option menu

我可以通过 XML 文件在 Android 中创建一个选项菜单,但我想在从 XML 添加菜单之前以编程方式添加第二个菜单.

例如:下面的代码添加了一个菜单项搜索。

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

    <item
        android:id="@+id/action_search"
        android:icon="@drawable/search"
        app:showAsAction="ifRoom|collapseActionView"
        app:actionViewClass="android.support.v7.widget.SearchView"
        android:title="Search"/>

</menu>

如果我以编程方式添加新菜单项,例如

   menu.add(0,Menu.FIRST, Menu.NONE,"Gift box").setIcon(R.drawable.jingle_bell).
                setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);

它出现在操作栏中的搜索菜单项之后,但我需要它在搜索菜单项之前。

我需要做哪些改变?

试试这个:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.yourmenu, menu);
    menu.add(0,Menu.FIRST, Menu.NONE,"Gift box").setIcon(R.drawable.ic_refresh).
            setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
    return true;
}

更新:

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

<item
    android:id="@+id/action_search"
    android:icon="@drawable/search"
    android:orderInCategory="200"
    app:showAsAction="ifRoom|collapseActionView"
    app:actionViewClass="android.support.v7.widget.SearchView"
    android:title="Search"/>

</menu>

只需将商品的订单设置为,

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.yourmenu, menu);
    menu.add(Menu.NONE, Menu.FIRST, 1,"Gift box").setIcon(R.drawable.ic_refresh).
            setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
    return true;
}

Third parameter 是以上菜单项的顺序。现在在您的 menu.xml 中将商品的订单设置为,

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

    <item
        android:id="@+id/action_search"
        android:icon="@drawable/search"
        android:orderInCategory="2"
        app:showAsAction="ifRoom|collapseActionView"
        app:actionViewClass="android.support.v7.widget.SearchView"
        android:title="Search"/>

</menu>

试试下面的例子

在 XML 中:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
    android:id="@+id/action_guide"
    android:title="title"
    android:icon="@drawable/ic_title"
    app:showAsAction="always"
     />

然后将下面的代码复制到您的 activity :

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main_actions, menu);
    return true;
}