gpt4 book ai didi

android - 如何在android中的抽屉导航内添加可折叠菜单项?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:25:39 27 4
gpt4 key购买 nike

我有一个 DrawerLayout附上一个 NavigationView这个布局 Activity 作为我应用程序中所有 Activity 的通用抽屉导航。我正在为 app:menu 提供菜单资源在导航 View 中。我有一些菜单项,但我希望其中一个菜单项可以折叠/展开,这样当我单击它时,它会展开以显示两个子菜单,并在第二次单击时再次折叠。

我通过添加另一个 <menu> 添加了子菜单在<item>里面但不能使其可折叠/展开。

此外,我不想使用 ExpandableListView为了我的目的。相反,我只需要在菜单资源文件中做一些调整。请给我指出正确的方向。我在 Google 上搜索只是为了找到使用 ExpandableListView 的可折叠列表项的代码、博客和示例。 ,但我需要它与 NavigationView 一起使用来自设计支持库的设计小部件。

这是我的菜单文件代码:

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

<group android:checkableBehavior="single">
<item
android:id="@+id/nav_aboutus"
android:title="About Us" />

<item
android:id="@+id/nav_faq"
android:title="FAQs" />
<item
android:id="@+id/nav_share"
android:title="Share" />
<item
android:id="@+id/nav_myaccount"
android:title="My Account" />
<item
android:id="@+id/nav_legal"
android:title="Legal" >
<menu>
<item
android:id="@+id/nav_tnc"
android:title="Terms and Conditions" />
<item
android:id="@+id/nav_pp"
android:title="Privacy Policy" />
</group>
</menu>
</item>

</menu>

我希望 Legal 菜单项可以展开,包含两个子菜单项“条款和条件”、“隐私政策”。

最佳答案

有一个技巧可以在不使用 ExpandableListView 的情况下执行此操作。通常在菜单布局文件中添加这些菜单项,并在您想要在其下显示它们的菜单项的项目单击时隐藏/显示它们,如下所示:

 public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.

NavigationView nv= (NavigationView) findViewById(R.id.nav_view);
Menu m=nv.getMenu();
int id = item.getItemId();
if (id == R.id.nav_posts) {
boolean b=!m.findItem(R.id.nav_class).isVisible();
//setting submenus visible state
m.findItem(R.id.nav_class).setVisible(b);
m.findItem(R.id.nav_dept).setVisible(b);
m.findItem(R.id.nav_batch).setVisible(b);
m.findItem(R.id.nav_campus).setVisible(b);
return true;
} else if (id == R.id.nav_walls) {
boolean b=!m.findItem(R.id.nav_wall_events).isVisible();
//setting submenus visible state
m.findItem(R.id.nav_wall_events).setVisible(b);
m.findItem(R.id.nav_wall_fun).setVisible(b);
m.findItem(R.id.nav_wall_hadith).setVisible(b);
m.findItem(R.id.nav_wall_news).setVisible(b);
m.findItem(R.id.nav_wall_Poetry).setVisible(b);
return true;
} else if (id == R.id.nav_com) {

m.findItem(R.id.nav_share).setVisible(false);
m.findItem(R.id.nav_send).setVisible(false);

} else if (id == R.id.nav_share) {

} else if (id == R.id.nav_send) {

}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}

菜单布局文件在哪里:

<?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_posts"
android:icon="@drawable/ic_menu_camera"
android:title="Posts" />

<item
android:id="@+id/nav_class"
android:title="Class"
android:visible="false" />
<item
android:id="@+id/nav_dept"
android:title="Department"
android:visible="false" />
<item
android:id="@+id/nav_batch"
android:title="Batch"
android:visible="false" />
<item
android:id="@+id/nav_campus"
android:title="Campus"
android:visible="false" />


<item
android:id="@+id/nav_walls"
android:icon="@drawable/ic_menu_gallery"
android:title="Walls" />

<item
android:id="@+id/nav_wall_news"
android:title="News"
android:visible="false" />
<item
android:id="@+id/nav_wall_events"
android:title="Events"
android:visible="false" />
<item
android:id="@+id/nav_wall_fun"
android:title="Fun"
android:visible="false" />
<item
android:id="@+id/nav_wall_hadith"
android:title="Hadith"
android:visible="false" />
<item
android:id="@+id/nav_wall_Poetry"
android:title="Poetry"
android:visible="false" />


</group>

<item
android:id="@+id/nav_com"
android:title="Communicate">
<menu>
<item
android:id="@+id/nav_share"
android:icon="@drawable/ic_menu_share"
android:title="Share" />
<item
android:id="@+id/nav_send"
android:icon="@drawable/ic_menu_send"
android:title="Send" />
</menu>
</item>

</menu>

关于android - 如何在android中的抽屉导航内添加可折叠菜单项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35956789/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com