如何在导航组件android中自定义actionBar

问题描述

我将导航视图转换为导航组件。
现在,我需要知道如何在登录注册片段时不显示汉堡图标,并更改其他片段中后退图标的行为,因为现在它像汉堡图标一样打开导航菜单。我做了导航视图:

MainActivity(实现DrawerLocker-我的自定义界面):

    @Override
public void setDrawerLocked(boolean enabled) {
    if (enabled) {
        binding.drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
        toggle.setDrawerIndicatorEnabled(false);
    } else {
        binding.drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
        toggle.setDrawerIndicatorEnabled(true);
    }
}

SignInFragment:

    @Override
public void onViewCreated(@NonNull View view,@Nullable Bundle savedInstanceState) {
    super.onViewCreated(view,savedInstanceState);

    ((DrawerLocker) requireActivity()).setDrawerLocked(true);

}

替换为导航组件: MainActivity:

   @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        binding = DataBindingUtil.setContentView(this,R.layout.activity_main);
        setSupportActionBar(binding.appBar.toolbar);

        toggle = new ActionBarDrawerToggle(
                this,binding.drawerLayout,binding.appBar.toolbar,R.string.navigation_drawer_open,R.string.navigation_drawer_close);
        binding.drawerLayout.addDrawerListener(toggle);
        toggle.syncState();

        binding.navView.setNavigationItemSelectedListener(this);

        navController = Navigation.findNavController(this,R.id.main_nav_host_fragment);
        mAppBarConfiguration = new AppBarConfiguration.Builder(navController.getGraph())
                .setDrawerLayout(binding.drawerLayout)
                .build();
        NavigationUI.setupActionBarWithNavController(this,navController,mAppBarConfiguration);

    }
  @Override
    public boolean onSupportNavigateUp() {
        NavController navController = Navigation.findNavController(this,R.id.main_nav_host_fragment);
        return NavigationUI.navigateUp(navController,mAppBarConfiguration)
                || super.onSupportNavigateUp();
    }
    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()) {
            case R.id.nav_disconnect_user:
                FirebaseAuth.getInstance().signOut();
                navController.navigate(R.id.nav_sign_in);
                break;
        }
        NavigationUI.onNavDestinationSelected(item,navController);
        binding.drawerLayout.closeDrawer(GravityCompat.START);
        return true;
    }

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)