如何在Android中以编程方式创建和膨胀BottomNavigationView?

时间:2019-01-28 19:25:36

标签: android

首先,我想解释一下“以编程方式”的含义,在我的情况下是“完全没有XML”

我的目标很简单,但是我正努力以编程方式进行所有操作:

  1. 在屏幕底部放置一个BottomNavigationView

  2. 使用4个按钮为BottomNavigationView充气,每个按钮都有一个图标,但没有标题

  3. 在选择侦听器上进行设置,并在选择它时,找出被选中的项

这是我为1和2提供的代码,但没有为3:

public class BottomBarLayout extends RelativeLayout {
    BottomNavigationView bottomBar;

    public BottomBarLayout(Context context) {
        super(context);

        configureBottomBar();
    }

    private void configureBottomBar() {
        bottomBar = new BottomNavigationView(this.getContext());

        // Inflate bottom bar with 4 items without titles but with icons
        bottomBar.getMenu().add(null).setIcon(R.drawable.ic_...);
        bottomBar.getMenu().add(null).setIcon(R.drawable.ic_...);
        bottomBar.getMenu().add(null).setIcon(R.drawable.ic_...);
        bottomBar.getMenu().add(null).setIcon(R.drawable.ic_...);
        bottomBar.setOnNavigationItemSelectedListener(menuItem -> onSelectNavigationItem(menuItem));

        // Add layout rules to stick bottomBar to bottom of screen
        LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
        params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
        addView(bottomBar, params);
    }
}

private boolean onSelectNavigationItem(MenuItem item) {
    // -------------------->Question here<------------------------
    return true;
}

我的问题是,在onSelectNavigationItem侦听器中,我如何知道选择了哪个项目?我没有为这4个项目分配ID。如果我可以分配ID,该怎么办?如果没有,我如何知道选择了哪个项目?谢谢。

0 个答案:

没有答案