我想在片段上設定導航抽屜選單。我不希望導航抽屜在我啟動我的應用程式時出現。我希望它在我進入另一頁(即不是第一頁)后顯示。但問題是,onSupportNavigateUp只能寫在MainActivity上,也就是第一頁。
這是我的 MainActivity.kt :
class MainActivity : AppCompatActivity() {
private lateinit var drawerLayout: DrawerLayout
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@Suppress("UNUSED_VARIABLE")
val binding = DataBindingUtil.setContentView<ActivityMainBinding>(this, R.layout.activity_main)
drawerLayout = binding.drawerLayout
val navController = this.findNavController(R.id.myNavHostFragment)
NavigationUI.setupActionBarWithNavController(this,navController, drawerLayout)
NavigationUI.setupWithNavController(binding.navView, navController)
}
override fun onSupportNavigateUp(): Boolean {
val navController = this.findNavController(R.id.myNavHostFragment)
return NavigationUI.navigateUp(navController, drawerLayout)
}
}
這是我的 activity_main.xml `
<androidx.drawerlayout.widget.DrawerLayout
android:id="@ id/drawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<fragment
android:id="@ id/myNavHostFragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:navGraph="@navigation/navigation"
app:defaultNavHost="true"
/>
</LinearLayout>
<com.google.android.material.navigation.NavigationView
android:id="@ id/navView"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/nav_header"
app:menu="@menu/navdrawer_menu" />
</androidx.drawerlayout.widget.DrawerLayout>
`
它通過使用片段標記和 NavHostFragment獲取fragment_title.xml顯示并將其用于顯示。activity_main.xml
我還有另一個名為fragment_home.xmland HomeFragment.ktclass 的片段。
我不知道的是,當我在標題片段上時如何不顯示導航抽屜,而在我在主頁片段上時如何開始顯示導航抽屜?
uj5u.com熱心網友回復:
下面的代碼將navView在 TitleFragment 中設定可見性,并在其他目的地設定可見性:
navController.addOnDestinationChangedListener { _, destination, _ ->
if (destination.id == R.id.titleFragment) {
navView.visibility = View.GONE
} else {
navView.visibility = View.VISIBLE
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/534397.html
