如何解决如何在导航组件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 举报,一经查实,本站将立刻删除。