Android - 如何根据用户类型隐藏某些活动

时间:2016-08-07 10:09:50

标签: android

我想根据用户类型(即管理员或用户)在导航栏中显示特定选项。 管理员可以查看所有选项,但用户可以查看较少的活动。

3 个答案:

答案 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);

为您想要隐藏的每个菜单项执行此操作。