首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android:以编程方式在菜单中添加红利

Android:以编程方式在菜单中添加红利
EN

Stack Overflow用户
提问于 2018-06-12 03:13:44
回答 1查看 26关注 0票数 0

我正在尝试创建一个子菜单,其中有3组项目被添加到我的java代码中,并且我希望将它们分开。这是菜单xml:

代码语言:javascript
复制
<item
    android:id="@+id/action_search"
    android:orderInCategory="100"
    android:icon="@drawable/ic_menu_search"
    app:showAsAction="always"
    android:title="search"
    app:actionViewClass="android.support.v7.widget.SearchView" />

<item
    android:id="@+id/action_filter"
    android:orderInCategory="110"
    android:icon="@drawable/ic_menu_filter"
    app:showAsAction="always"
    android:title="filter">
    <menu>
        <group android:id="@+id/no_filter"
            android:orderInCategory="101">
       </group>
        <group android:id="@+id/genre_filters"
            android:orderInCategory="102">
        </group>
        <group android:id="@+id/author_filters"
            android:orderInCategory="103">
       </group>
    </menu>
</item>

这是我在onCreateOptionsMenu函数中的内容:

代码语言:javascript
复制
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {

    super.onCreateOptionsMenu(menu, inflater);
    inflater.inflate(R.menu.search_and_filter_bar, menu);
    MenuItem searchItem = menu.findItem(R.id.action_search);
    SearchView searchView = (SearchView) searchItem.getActionView();
    searchView.setOnQueryTextListener(this);
    MenuItem filterItem = menu.findItem(R.id.action_filter);
    SubMenu filters = filterItem.getSubMenu();
    current_filter = filters.add(R.id.no_filter,120, Menu.NONE,"All Books");
    filters.add(R.id.genre_filters,121, Menu.NONE,"Fantasy");
    filters.add(R.id.author_filters,122, Menu.NONE,"JK Rowling");
}

据我所知,群体之间应该有一条自动的分界线,但没有。有什么想法吗?

顺便说一下,当我尝试一些东西时,我在XML中添加了一些项,它们出现在我以编程方式添加的项之上,而忽略了组的顺序。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-06-12 04:34:06

我建议自定义对话框,有不同的选项(例如)。您可以使用要在其中显示的选项创建一个CharSequence数组,然后使用setItems(CharSequence[], DialogInterface.OnClickListener).方法将该数组传递给AlertDialog.Builder,也可以使用您自己的布局,就像web中的许多示例一样。

举个例子:

代码语言:javascript
复制
CharSequence colors[] = new CharSequence[] {"red", "green", "blue", "black"};

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Pick a color");
builder.setItems(colors, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        // the user clicked on colors[which]
    }
});
builder.show();

然后,您可以在任何位置显示此菜单,也可以显示为菜单。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50804600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档