2016-11-22 75 views
1

我跟着this示例使用android.support.v4.widget.DrawerLayout设计导航菜单视图。在drawer_menuList.xml定义Xamarin.Android:将动态菜单项添加到DrawerLayout的导航视图中

我的静态菜单项列表:

<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()方法。任何人都可以提出正确的方法来在NavigationView的DrawerLayout中动态地添加菜单和图标。

+0

。菜单,通常Xamarin接近'getX'的方法是将其转换为属性 –

+0

getX:它返回视图的视觉x位置。但根据android文档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); 
     } 

通过这种方式,您可以在DrawerLayout的NavigationView中动态添加菜单项。

+0

好的答案亲爱的:)! –