在某些片段中隐藏导航抽屉

Posted

技术标签:

【中文标题】在某些片段中隐藏导航抽屉【英文标题】:Hide Navigation Drawer in certain Fragments 【发布时间】:2020-12-29 17:17:34 【问题描述】:

我构建了一个具有登录屏幕和主屏幕的应用程序。我遵循单一活动设计原则。我已经实现了这样的导航抽屉。 这是我的MainActivity

class MainActivity : AppCompatActivity() 

private lateinit var drawerLayout: DrawerLayout
private lateinit var appBarConfiguration: AppBarConfiguration

override fun onCreate(savedInstanceState: Bundle?) 
    super.onCreate(savedInstanceState)

    val binding = ActivityMainBinding.inflate(layoutInflater)
    setContentView(binding.root)

    drawerLayout = binding.drawerLayout

    val navController = this.findNavController(R.id.navHostFragment)
    NavigationUI.setupActionBarWithNavController(this, navController, drawerLayout)

    appBarConfiguration = AppBarConfiguration(navController.graph, drawerLayout)
    NavigationUI.setupWithNavController(binding.navView, navController)


override fun onSupportNavigateUp(): Boolean 
    val navController = this.findNavController(R.id.navHostFragment)
    return NavigationUI.navigateUp(navController,drawerLayout)


MainActivity 布局

<?xml version="1.0" encoding="utf-8"?>

<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<androidx.drawerlayout.widget.DrawerLayout
    android:id="@+id/drawerLayout"
    android:layout_
    android:layout_>
    <FrameLayout
        android:layout_
        android:layout_>
        <fragment
            android:id="@+id/navHostFragment"
            android:name="androidx.navigation.fragment.NavHostFragment"
            android:layout_
            android:layout_
            app:defaultNavHost="true"
            app:navGraph="@navigation/navigation" />
    </FrameLayout>
    <com.google.android.material.navigation.NavigationView
        android:id="@+id/navView"
        android:layout_
        android:layout_
        android:layout_gravity="start"
        app:menu="@menu/navdrawer" />
</androidx.drawerlayout.widget.DrawerLayout>

我还有两个片段loginFramenthomeFragment 现在导航抽屉显示了这个片段,但我希望它只在主屏幕片段中。 检查了一些资源how to hide navigation drawer。但这种方法只锁定抽屉。

【问题讨论】:

如何导航到 loginFragment? 我正在使用导航图进行导航,我正在使用来自喷气背包@GabrieleMariotti 的导航设计模式 【参考方案1】:

我有相同的设计应用程序,我制作了带有活动的登录/注册屏幕和我想用片段制作的导航抽屉导航的所有其他屏幕,也在一些我不想显示抽屉的子菜单中,我使用再次活动。活动和片段一起工作得很好。对我来说,在活动之间不使用抽屉导航看起来更容易。快乐的编码!

【讨论】:

以上是关于在某些片段中隐藏导航抽屉的主要内容,如果未能解决你的问题,请参考以下文章

如何使向上按钮返回而不是打开导航抽屉

如何以编程方式显示/隐藏导航抽屉

隐藏导航抽屉菜单项 - Android

当用户按下后退按钮时隐藏导航抽屉

当导航抽屉滑动任意量时隐藏操作栏菜单项

Android - 为带有导航抽屉和应用栏的应用完全隐藏状态和导航栏