dynamic adding item to NavigationView in Android

后端 未结 3 690
一个人的身影
一个人的身影 2020-12-08 05:29

I want to build NavigationDrawer with the possibility of adding new items (such as yahoo weather App with adding new cities). I have working NavigationDra

相关标签:
3条回答
  • 2020-12-08 05:31

    Suppose you have two groups, group1 and group2. If you want to dynamically add items to group1, then you can assign priority to group2 to make it always below group1. Then when you add new items to group1, it won't be inserted below group2.

    Here is a sample:

    <group android:id="@+id/group1" />
    <group
        android:id="@+id/group2"
        android:orderInCategory="999">
        <item
            android:checked="false"
            android:id="@+id/item1"
            android:icon="@drawable/ic_inbox_black_24dp"
            android:title="Item1" />
        <item
            android:checked="false"
            android:id="@+id/Item2"
            android:icon="@drawable/ic_inbox_black_24dp"
            android:title="Item2"
            />
    </group>
    

    And when you add menu items to group1:

    Menu menu = navigationView.getMenu();
    menu.add(R.id.group1,Menu.NONE,Menu.NONE,itemName);
    

    This should work. I tested it on Android design library 23.1.1.

    0 讨论(0)
  • 2020-12-08 05:49
    <group android:checkableBehavior="single"> 
        <item
            android:id="@+id/send_notification"
            android:icon="@drawable/ic_menu_send"
            android:title="@string/send_notification"
            android:visible="false"/>     
    </group>
    

    if you want too add a item dynamically to a navigation drawer then make it invisible in xml and make it visible through programatically as follows.

    NavigationView navigationView = findViewById(R.id.nav_view);
    Menu menu=navigationView.getMenu();
    menu.findItem(R.id.send_notification).setVisible(true);
    

    thats it.

    0 讨论(0)
  • 2020-12-08 05:56

    To add the Item programmatically, we can get a Menu object using getMenu() method of NavigationView and then we can add Items into the navigation drawer using that Menu object.

    final Menu menu = navigationView.getMenu();
    for (int i = 1; i <= 3; i++) {
       menu.add("Runtime item "+ i);
    }
    

    Using SubMenu, we can add a subsection and Items into it.

    // adding a section and items into it
    final SubMenu subMenu = menu.addSubMenu("SubMenu Title");
    for (int i = 1; i <= 2; i++) {
       subMenu.add("SubMenu Item " + i);
    }
    

    for more details Check TechnoTalkative.

    EDIT: If you want to interact with the menu, use
    menu.add(0, itemId, 0, title); and then

     public boolean onNavigationItemSelected(MenuItem item) {
            // Handle navigation view item clicks here.
            int id = item.getItemId();
    

    id will give you assigned itemId

    0 讨论(0)
提交回复
热议问题