我想根据用户类型(即管理员或用户)在导航栏中显示特定选项。 管理员可以查看所有选项,但用户可以查看较少的活动。
答案 0 :(得分:0)
根据用户类型以编程方式添加导航抽屉项目。
即。如果是普通用户或管理员用户,则加载相应的抽屉项目数组。
答案 1 :(得分:0)
使用NavigationView
在此处阅读更多信息NavigationView | Android Developers
所以你的布局xml就像:
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<!-- Your contents -->
<android.support.design.widget.NavigationView
android:id="@+id/navigation"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:menu="@menu/menu_non_admin" />
</android.support.v4.widget.DrawerLayout>
注意NavigationView的app:menu
属性。在那里设置非管理员的一般菜单项
然后在您的活动中获取对导航视图的引用并执行以下操作:
NavigationView nav = (NavigationView) findViewById(R.id.navigation);
// check if user is admin
if (user.isAdmin()) { // use your own logic to check if user is admin
nav.inflateMenu(R.menu.menu_admin); // supposing you have created the admin menu too
}
答案 2 :(得分:0)
执行此操作的一种方法是将所有选项放入菜单资源文件(包括仅管理员应该看到的选项),然后以编程方式隐藏“常规”用户不应看到的选项。例如:
menu_nav.xml:
<?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/user_admin"
android:icon="@drawable/ic_user_admin"
android:title="@string/title_user_admin" />
<item
android:id="@+id/sales"
android:icon="@drawable/ic_sales"
android:title="@string/title_sales" />
<item
android:id="@+id/profile"
android:icon="@drawable/ic_profile"
android:title="@string/title_profile" />
<item
android:id="@+id/map"
android:icon="@drawable/ic_map"
android:title="@string/title_map" />
</group>
</menu>
然后在您的活动onCreate()
中,在您致电
navigationView = (NavigationView) findViewById(R.id.nav_view);
然后致电
navigationView.getMenu().findItem(R.id.user_admin).setVisible(false);
为您想要隐藏的每个菜单项执行此操作。