如何以编程方式更改NavigationView菜单

时间:2016-05-13 06:50:30

标签: android android-navigationview

我有一个navigationViewheaderLayoutmenu附加了navigationView。我没有使用任何库。 我试图通过谷歌menu's达到同样的效果,但区别在于,不是更改帐户而是查看额外的/隐藏命令(如果用户是管理员,则为管理员方面)。

如何添加/充气这件事?我有两个navigationView。我试图这样做,我得到的是,它复制了自己。导致public void changeNavigationDrawer(){ mNavigationView = (NavigationView) findViewById(R.id.navigation_view); mNavigationView.setItemIconTintList(null); mNavigationView.getMenu(); mNavigationView.inflateMenu(R.menu.navigation_drawer); mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(MenuItem menuItem) { menuItem.setChecked(true); mDrawerLayout.closeDrawers(); int id = menuItem.getItemId(); switch (id){ //Nav list no 1 is User Profile //Nav list no 2 case R.id.my_friends: Intent intent_friends = new Intent(MainActivity.this,CommunityFriendsActivity.class); startActivity(intent_friends); finish(); break; //Nav list no 3 case R.id.my_feeds: //BY DEFAULT YOU'RE in the FEEDS SECTION break; } return true; } }); } 具有相同的图标和名称。我创建了两个方法,在单击图像按钮时调用它们。

这是我的代码: MainActivity.java

public void adminNavigationDrawer(){
    mNavigationView = (NavigationView) findViewById(R.id.navigation_view);
    mNavigationView.setItemIconTintList(null);
    mNavigationView.inflateMenu(R.menu.navigation_drawer_admin);
    mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(MenuItem item) {

            int id = item.getItemId();
            switch (id){

            }

            return true;
        }
    });

}

同一文件中的另一种方法:

WebDriver driver;
public MyClass()
    {
        UIEvents auto = new UIEvents();
        driver = new FirefoxDriver();
        driver.manage().window().maximize();
        driver.get("my URL");

        LoginPage loginPage = new LoginPage(driver, auto);
        waitForPageLoad();
        loginPage.setEmail("aaa@aa.a");
        loginPage.setPassword("1234");
        loginPage.clickLogin();
    }



    public void waitForPageLoad() 
    {
        JavascriptExecutor js = (JavascriptExecutor)driver;
        final boolean response = js.executeScript("return document.readyState").equals("complete");

        if(response == false)
        {
            waitForPageLoad();
        }
}

ImageHeader

1 个答案:

答案 0 :(得分:0)

查看此库https://github.com/mikepenz/MaterialDrawer

材料抽屉库简单,灵活(绝对没有限制),您可以利用预定义的类。

您可以使用此库在几分钟内设置Material Drawer。

或者如果你想自己使用它。您可以在标题视图中单击箭头按钮创建两个组并在每个组上执行隐藏/显示。

//已编辑

用于隐藏和显示组

https://stackoverflow.com/a/37202286/5028508