android - 以编程方式膨胀底部导航 View 菜单

标签 android menuitem bottomnavigationview inflate-exception

底部导航 View 已添加到设计支持库的第 25 版中。试用过,现在使用起来更容易。

但根据我的应用要求,我在实现它时遇到了问题。 我想动态地扩充菜单资源并以编程方式更改底部导航 View 的菜单项/标题。

inflateMenu(int menuResource) — Inflate a menu for the bottom navigation view using a menu resource identifier.

根据文档:

inflateMenu: void inflateMenu (int resId) Inflate a menu resource into this navigation view. Existing items in the menu will not be modified or removed. Parameters resId int: ID of a menu resource to inflate

尝试通过导航 View 以编程方式使用此inflateMenu(int resID) 方法会抛出异常“未找到资源

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>

在 Activity 内的底部导航 View 的 menuresource 中以编程方式膨胀:

navBar = (BottomNavigationView) findViewById(R.id.bottom_navigation);
    navBar.inflateMenu(R.menu.bottom_navigation_view);

最佳答案

navigationView.getMenu().clear(); //clear old inflated items.
navigationView.inflateMenu(R.menu.new_navigation_drawer_items);

来自 this answer

关于android - 以编程方式膨胀底部导航 View 菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43084085/

相关文章:

android - GridLayoutAnimation 不起作用

python - 如何在 gtk.MenuItem 标签中显示富文本?

android - 在android中禁用菜单项的背景高亮颜色

android - 底部导航 View 的自定义形状(Android)?

java - Android Horizo​​ntalScrollView 内容拉伸(stretch)

java - 具有 2 位小数的浮点值

java - Android Studio 自定义声音基于主题通知 FCM

user-interface - 在运行时更改MenuItem标题

android - BottomNavigationView 在不使用反射的情况下禁用移位模式

Android Kotlin 底部导航栏