我目前正在制作一款有3种口味的应用。我在NavigationView
内使用DrawerLayout
进行导航。我在NavigationView
中使用XML指定了我的菜单,如下所示:
...
app:menu="@menu/activity_main_drawer"
...
这适用于所有3种口味。 activity_main_drawer
看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_categories"
android:title="Categories" />
<item
android:id="@+id/nav_map"
android:title="Map" />
</group>
</menu>
这用于我的名为MainActivity
的主要活动。问题是,应用程序无论如何都不应该区分,除了API网址。现在,我们只需为其中一个应用删除其中一个链接。
我能想到的第一个解决方案是将activity_main_drawer
复制到我的特定于风味的资源菜单文件夹中并放置android:visible="false"
来实现其目的,但是我们需要维护两个菜单(并且它有可能忘记更新特定的味道一)。我不能简单地从特定于风味的项目中的菜单中删除<item>
,因为ID不可用,应用程序也不会编译。
另一种可能性是在检查应用程序正在运行的风格后,在运行时删除该项目。
我想了解哪种方法更好,以及如何最小化复制的代码/文本数量。
答案 0 :(得分:1)
现在,我们只需为其中一个应用删除其中一个链接。
我假设通过&#34;链接&#34;,你的意思是<item>
个元素之一。
如果是这样的话:
在boolean
sourceset
i_can_haz_link
资源,此处称为true
,为main
在不应该包含此链接的风格中重新定义boolean
资源为false
在受影响的android:visible="@bool/i_can_haz_link"
<item>
在你的问题中,我会选择这两种方法中的任何一种。在问题中的两个中,我可能会使用重复的menu
资源,这样Java代码就可以保持干净且不受影响。