Android - 动态添加底部导航视图

时间:2017-05-11 12:15:39

标签: android menu bottomnavigationview

我尝试动态添加底部导航视图。我知道我在activity的xml文件中添加了一个导航视图。

<android.support.design.widget.BottomNavigationView
   android:id="@+id/navigation"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:layout_gravity="start"
   design:menu="@menu/items" />

我不想创建项目xml文件。我使用下面的代码来创建导航栏。

    bottomNavigationView = new BottomNavigationView(this);
    ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    bottomNavigationView.setLayoutParams(params);

    RelativeLayout layout = (RelativeLayout) findViewById(R.id.viewLayout);
    layout.addView(bottomNavigationView);

    Menu menu = bottomNavigationView.getMenu();
    menu.add(0, i, Menu.NONE, "TEXT");

menu.add会抛出错误。

  关于空对象引用的

android.support.v7.view.menu.MenuBuilder.size()'

如何动态添加导航视图?

3 个答案:

答案 0 :(得分:2)

这是BottomNavigationView的错误。

以下是错误参考:https://issuetracker.google.com/issues/37124043

已在支持库25.0.1中修复此问题。更新您的support library,然后重试。

希望这会有所帮助〜

答案 1 :(得分:0)

尝试这样做

bottomNavigationView = new BottomNavigationView(ActivityName.this);

bottomNavigationView = new BottomNavigationView(getApplicationContext());

答案 2 :(得分:0)

您可以定义菜单xml并在BottomNavigationView对象上调用inflateMenu方法进行膨胀。

如果您需要添加任何其他菜单项,可以通过获取菜单对象并将项添加到菜单对象来实现。

菜单menu = bottomNavigationView.getMenu();