How to inflate android NavigationView with another menu dynamically during onClick?

☆樱花仙子☆ 提交于 2019-12-18 13:19:30

问题


Hi I have a NavigationView and there is an imageview in the headerview of that NavigationView. When I click on the imageview , NavigationView should inflate another menu resource file and replace current menu like in PlayStore app.

I've tried this:

imgIndic.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Log.e("Onclick","Arrow click");
        navigationView.inflateMenu(R.menu.second_menu);
    }
}); 

But when I click on the button, nothing happens! (Log Onclick is showing in the logcat) How can I do this?


回答1:


try the following code

imgIndic.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {      
        navView.getMenu().clear();
        navView.inflateMenu(R.menu.second_menu);
    }
}); 



回答2:


I would suggest to inflate just one menu with several groups and change the visibility of the groups. Simple and effective.

<group
    android:id="@+id/group_1"
    android:checkableBehavior="single"
    android:visible="false">
    ...
</group>

<group
    android:id="@+id/group_2"
    android:checkableBehavior="single"
    android:visible="true">
    ...
</group>

In your java code call

navigationView.getMenu().setGroupVisible(R.id.group_1, true)


来源:https://stackoverflow.com/questions/31203212/how-to-inflate-android-navigationview-with-another-menu-dynamically-during-oncli

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!