2

底部导航视图已添加到设计支持库的版本25中。试过了,现在使用起来要容易得多。充气底部导航以编程方式查看菜单

但是我面临着按照我的应用程序要求执行它的问题。 我想动态地为菜单资源充气并以编程方式更改Bottom Navigation视图的菜单项/标题。

inflateMenu(int menuResource) - 使用菜单资源标识符为底部导航视图充气菜单。

根据文档:

inflateMenu:无效inflateMenu(INT渣油) 充气菜单资源到该导航视图。 菜单中的现有项目将不会被修改或删除。 参数 渣油INT:菜单资源的ID膨胀

尝试使用此inflateMenu(INT渣油)方法编程方式与导航视图抛出异常 “未找到资源

bottomNavigationView.inflateMenu(R.menu.bottom_navigation_menu); 

没有任何第三方库可以实现它吗?

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <FrameLayout 
     android:id="@+id/main_fragment_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_above="@+id/bottom_navigation" /> 

    <android.support.design.widget.BottomNavigationView 
     android:id="@+id/bottom_navigation" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     app:itemBackground="@color/theme_action_bar_bg" 
     app:itemIconTint="@color/white" 
     app:itemTextColor="@color/white" /> 
</RelativeLayout> 

菜单资源:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <item 
     android:id="@+id/nav_bar_item_dashboard" 
     android:enabled="true" 
     android:icon="@drawable/ic_nav_bar_dashboard_24px" 
     android:title="@string/nav_bar_item_dashboard" 
     app:showAsAction="ifRoom" /> 
    <item 
     android:id="@+id/nav_bar_item_people" 
     android:enabled="true" 
     android:icon="@drawable/ic_nav_bar_people_24px" 
     android:title="@string/nav_bar_item_people" 
     app:showAsAction="ifRoom" /> 
    <item 
     android:id="@+id/nav_bar_item_classroom" 
     android:enabled="true" 
     android:icon="@drawable/ic_nav_bar_classroom_24px" 
     android:title="@string/nav_bar_item_classrooms" 
     app:showAsAction="ifRoom" /> 

    <item 
     android:id="@+id/nav_bar_item_manage" 
     android:enabled="true" 
     android:icon="@drawable/ic_nav_bar_manage_24px" 
     android:title="@string/nav_bar_item_manage" 
     app:showAsAction="ifRoom" /> 

    <item 
     android:id="@+id/nav_bar_item_more" 
     android:enabled="true" 
     android:icon="@drawable/ic_nav_bar_more_24px" 
     android:title="@string/nav_bar_item_more" 
     app:showAsAction="ifRoom" /> 
</menu> 

在menuresource编程充气的底导航视图内活动:

+0

发布您的代码和布局 –

回答

5
BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation); 

//Add MenuItem with icon to Menu 
navigation.getMenu().add(Menu.NONE, 1, Menu.NONE, "Home").setIcon(R.drawable.ic_home_black_24dp); 

希望它能帮助。

+0

我们可以通过使用navigation.getMenu()。clear();添加新项目之前清除菜单。 –