2016-11-22 13 views
1

thisサンプルに続いてandroid.support.v4.widget.DrawerLayoutを使用してナビゲーションメニュービューを設計しました。Xamarin.Android:DrawerLayoutのナビゲーションビューに動的メニュー項目を追加

としてdrawer_menuList.xmlで定義された私の静的メニュー項目リスト:

<group 
     android:id="@+id/group" 
     android:checkableBehavior="single"> 
     <item 
      android:id="@+id/item1" 
      android:icon="@drawable/item1" 
      android:title="Item1" /> 
     <item 
      android:id="@+id/Item2" 
      android:icon="@drawable/item2" 
      android:title="Item2"/> 
    </group> 

activity_main.axml

<android.support.design.widget.NavigationView 
     android:id="@+id/nav_view" 
     android:layout_height="match_parent" 
     android:layout_width="wrap_content" 
     android:layout_gravity="start" 
     android:fitsSystemWindows="true" 
     app:headerLayout="@layout/nav_header" 
     app:menu="@menu/drawer_menuList" /> 

私は、スタックオーバーフローのthis同様のスレッドを発見し、これを試してみました:

NavigationView mDrawerList = FindViewById<NavigationView>(Resource.Id.nav_view); 

Menu menu = mDrawerList.getMenu(); 

xamarin.androidにはgetMenu()/GetMenu()というメソッドはありません。誰も、DrawerLayoutのNavigationViewでアイコンと共に動的にメニューを追加する正しい方法を提案することができます。

+0

。メニュー、通常はXamarinが 'getX'に近づく方法は、それをプロパティに変換することです –

+0

getX:ビューのビジュアルなx位置を返します。しかし、アンドロイドのドキュメントgetMenu()は、このナビゲーションビューに関連付けられたMenuインスタンスを返します。私はこれが視覚的な座標位置ではない必要があります –

答えて

3

私の質問に答える:

List<MenuItems> lst = new List<MenuItems>(); 
lst = GetMenuItems(); 

次にxamarinに、我々は動的にそのタイトルとアイコンでメニュー項目を取り込むことができます。

は、次のようなメニュー項目のリストを持っていると仮定

NavigationView navigationView = FindViewById<NavigationView>(Resource.Id.nav_view); 
    foreach (MenuItems objMenuItems in lst) 
     { 
     int iconID = (int)typeof(Resource.Drawable).GetField(objMenuItems.IconName).GetValue(null); 

     navigationView.Menu.Add(objMenuItems.Title).SetIcon(iconID); 
     } 

このようにすると、NavigationViewのメニュー項目をDrawerLayoutに動的に追加できます。

+0

良い答え親愛なる:)! –

関連する問題