2016-08-07 4 views

答えて

0

ナビゲーションのドロワー項目をユーザーの種類に応じてプログラマチックに追加します。

つまり、通常のユーザーまたは管理者のユーザーがそれぞれ引き出し項目の配列を読み込むとします。 NavigationViewの

<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> 

テイク通知app:menuの属性:

0

使用NavigationView続きを読むそれについてここ

NavigationView | Android Developersは、だからあなたのレイアウトXMLは次のようになります。あそこに自分の活動に続いて非管理者

のための一般的なメニュー項目を設定し、ナビゲーションビューへの参照を取得し、次の操作を行います。これを行うには

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 
} 
0

一つの方法は、にすべてのオプションを置くことですメニューリソースファイル(管理者だけが表示するオプションを含む)を表示して、「通常の」ユーザーに表示されないものをプログラムで隠します。たとえば、次のように

menu_nav.xml:あなたの活動のonCreate()

<?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> 

そして、あなたはすべてのメニュー項目のためにそれを行います

navigationView.getMenu().findItem(R.id.user_admin).setVisible(false); 

を呼び出すその後

navigationView = (NavigationView) findViewById(R.id.nav_view); 

を呼び出した後あなたは隠されたい。

関連する問題