如何在开始目标片段中隐藏导航抽屉图标,并在导航图的开始目标片段旁边显示它

时间:2019-06-21 08:59:03

标签: android kotlin navigation-drawer

我将使用Navigation Graph开发一个Android应用程序,该应用程序具有单个活动和两个带有导航抽屉的片段(LoginFragment和HomeFragment)。

当我在活动中添加Navigationdrawer时,它在LoginFragment中可见,但是我只想在HomeFragment中显示汉堡图标,而不是LoginFragment

如何在活动中添加导航抽屉而不将其添加到LoginFragment

我试图隐藏toolbar

        val navController=this.findNavController(R.id.nav_host_fragment)

        navController.addOnDestinationChangedListener{ nc: NavController, nd: NavDestination, _->
            if(nd.id==nc.graph.startDestination){
                drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED)
                binding.toolBar.visibility = View.GONE

            }else{
                drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED)
                NavigationUI.setupActionBarWithNavController(this,navController,drawerLayout)
                binding.toolBar.visibility = View.VISIBLE
            }

我只想在HomeFragment中显示汉堡图标,而不是LoginFragment

3 个答案:

答案 0 :(得分:0)

最好为“登录”页面创建单独的活动。登录后,您现在可以调用活动主体并设置HomeFragment。

答案 1 :(得分:0)

您可以在活动中创建用于隐藏和显示导航抽屉图标的函数,并在CreateView的相应片段中调用这些函数

答案 2 :(得分:0)

我认为您正在使用Kotlin。但是我认为它与Java中的方法没有什么不同。您可以从Java转换为Kotlin。那就是我在Java中所做的。

    ((AppCompatActivity) getActivity()).getSupportActionBar().hide(); // to hide toolbar
    ((AppCompatActivity) getActivity()).getSupportActionBar().show(); //to show toolbar

您需要在片段中使用此代码。例如,您可以设置... hide(); LoginFragment的onCreateView方法中的方法,之后可以设置... show(); HomeFragment的oncreateView中的方法。