因此,我使用最新的NavigationView导航抽屉和自定义工具栏图标。当我启动我的应用程序时,我可以在工具栏(Actionbar)中看到我的自定义图标,但是一旦我通过单击导航抽屉中的菜单项切换到不同的片段,我的工具栏就会重新设置为hambuger图标,并且它永远不会设置我的自定义图标,不管我在NavigationDrawer项目之间切换了多少次。下面是我的代码-
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
DrawerLayout drawer = findViewById(R.id.drawer_layout);
NavigationView navigationView = findViewById(R.id.nav_view);
View hView = navigationView.getHeaderView(0);
// Passing each menu ID as a set of Ids because each menu should be considered as top level destinations.
mAppBarConfiguration = new AppBarConfiguration.Builder(
R.id.nav_home, R.id.nav_score, R.id.nav_history,
R.id.nav_setting)
.setDrawerLayout(drawer)
.build();
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
NavigationUI.setupWithNavController(navigationView, navController);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_custom_icon);//your icon here
如果需要更多信息..。
我更改了上述代码的顺序,以查看是否有任何错误(这是在某些旧堆叠柱中提出的)。
发布于 2020-07-03 13:30:43
这是一个预期结果。
当使用
NavigationUI
时,当当前目标发生变化时,顶部的应用程序条帮助程序会自动在抽屉图标和向上图标之间转换。
可以在安装方法之后添加OnDestinationChangedListener
以设置自己的图标。
navController.addOnDestinationChangedListener(new NavController.OnDestinationChangedListener() {
@Override
public void onDestinationChanged(@NonNull NavController controller, @NonNull NavDestination destination, @Nullable Bundle arguments) {
if (destination.getId() == R.id.nav_xxx){
getSupportActionBar().setHomeAsUpIndicator(R.drawable....);
}
}
});
https://stackoverflow.com/questions/62722248
复制