如何解决在导航抽屉中创建可编辑的菜单
我们能否实现诸如创建新的可自定义菜单组并从现有菜单中添加最有用的菜单项之类的功能? (拖放或选择或使用任何其他方式)
我有一个导航抽屉,它是可折叠的。一组有许多子项。我正在寻找一种解决方案来从现有菜单组中挑选最有用的菜单项并创建一个新的可编辑菜单标签。你能帮忙解决这个问题吗? 提前致谢。
我的代码
activity_home_drawer.xml
<group android:checkableBehavior="single">
<item
android:id="@+id/general"
android:title="General"/>
<item
android:id="@+id/invoices"
android:title="Invoice"
android:visible="false"/>
<item
android:id="@+id/stock"
android:title="Stock"
android:visible="false"/>
<item
android:id="@+id/rpt"
android:title="Reports"
/>
<item
android:id="@+id/sales"
android:title="Sales Report"
android:visible="false"/>
<item
android:id="@+id/summary"
android:title="Summery Report"
android:visible="false"/>
<item
android:id="@+id/usr"
android:title="User"/>
<item
android:id="@+id/settings"
android:title="Settings"
android:visible="false"
/>
<item
android:id="@+id/archive"
android:title="Archive"
android:visible="false"
/>
</group>
</menu>
activity_home.xml
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">
<include
layout="@layout/app_bar_home"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<com.google.android.material.navigation.NavigationView
android:id="@+id/nav_view"
android:layout_width="270dp"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_home"
app:menu="@menu/activity_home_drawer" />
</androidx.drawerlayout.widget.DrawerLayout>
HomeActivity.java
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
NavigationView nv= (NavigationView) findViewById(R.id.nav_view);
nv.setItemIconTintList(null);
Menu m=nv.getMenu();
int id = item.getItemId();
if (id == R.id.general) {
boolean b=!m.findItem(R.id.invoices).isVisible();
//setting submenus visible state
m.findItem(R.id.invoices).setVisible(b);
m.findItem(R.id.stock).setVisible(b);
return true;
}
else if (id == R.id.rpt) {
boolean b=!m.findItem(R.id.sales).isVisible();
m.findItem(R.id.sales).setVisible(b);
m.findItem(R.id.summary).setVisible(b);
return true;
}
else if (id == R.id.usr) {
....
return true;
}
switch (item.getItemId()) {
case R.id.invoices: {
Intent invoiceListActivity = new Intent(this,InvoiceListActivity.class);
startActivity(invoiceListActivity);
break;
}
case R.id.action_settings: {
Intent settingsActivity = new Intent(this,SettingsActivity.class);
startActivity(settingsActivity);
break;
}
}
mDrawer.closeDrawer(GravityCompat.START);
return true;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。