问题描述
我们能否实现诸如创建新的可自定义菜单组并从现有菜单中添加最有用的菜单项之类的功能? (拖放或选择或使用任何其他方式)
我有一个导航抽屉,它是可折叠的。一组有许多子项。我正在寻找一种解决方案来从现有菜单组中挑选最有用的菜单项并创建一个新的可编辑菜单标签。你能帮忙解决这个问题吗? 提前致谢。
我的代码
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 (将#修改为@)