java - 如何在 Android NavigationView 菜单中对组进行排序/排序?

标签 java android

互联网上充斥着不同问题的答案(如何对组中的项目进行排序?答案是使用 OrderInCategory。我的问题是如何对组本身进行排序或排序?

在我的应用程序中,我必须以编程方式添加/删除每个组中的菜单项,以及一次显示/隐藏整个组。

我的设置如下:

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

    <group android:id="@+id/nav_menu_stuff1">
    </group>

    <group android:id="@+id/nav_menu_stuff2">
    </group>

    <group android:id="@+id/nav_menu_stuff3">
    </group>

    <group android:id="@+id/nav_menu_stuff4">
    </group>

</menu>

然后在代码中添加/删除:

getMenu().add(R.id.nav_menu_stuff1, some_id, 0, some_name);
getMenu().removeItem(some_id);

以及一次显示/隐藏整个组:

getMenu().setGroupVisible(R.id.nav_menu_stuff1, stuff1_is_visible);
getMenu().setGroupVisible(R.id.nav_menu_stuff2, stuff2_is_visible);
getMenu().setGroupVisible(R.id.nav_menu_stuff3, stuff3_is_visible);
getMenu().setGroupVisible(R.id.nav_menu_stuff4, stuff4_is_visible);

对我来说,问题是 Android 不维护组的顺序。在某些时候,我会清除中间组中的所有项目(例如 stuff2),然后重新添加项目。当我这样做时,该组最终会出现在 NavigationView 的底部。这不是我想要的。

如何维持群组秩序?

最佳答案

试试这个

使用可见的 true/false 而不是添加/删除

 navigationView = (NavigationView) findViewById(R.id.nav_view);
 Menu nav_Menu = navigationView.getMenu();
 nav_Menu.findItem(R.id.nav_settings).setVisible(false);

关于java - 如何在 Android NavigationView 菜单中对组进行排序/排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49788017/

相关文章:

java - 如何同时使用2个局域网适配器?

java - Long + Long 不大于 Long.MAX_VALUE

java - Tomcat 8.5 反 CSRF 随机数未生成

java - 互相关 : Android AudioRecord create sample data for TDoA

android - 在PhoneGap应用程序中显示Android中的状态栏(即防止全屏)

android - 广播 Intent 与多播监听器在Android上的实现

java - 为什么当我将嵌套的静态 Fragment 类声明为私有(private)时会产生错误?

java - 具有独占启动键的 DynamoDB 全局二级索引

android - 错误 :No resource found that matches the given name (at 'resource' with value '@xml/provider_paths' )

android - 使用协程测试改造