创建一个选项菜单

时间:2018-01-20 06:30:18

标签: android android-actionbar android-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);

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

我需要做出哪些改变?

3 个答案:

答案 0 :(得分:1)

试试这个:

@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>

答案 1 :(得分:0)

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

@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>

答案 2 :(得分:0)

尝试以下示例

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"
     />

然后将以下代码复制到您的活动中:

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