[英]Using BottomNavigationView to change FloatingActionButton Icon
BottomNavigationView.setOnItemSelectedListener 覆蓋基本行為,但我想擴展而不是覆蓋,我該怎么做?
我有一個 4 個片段的應用程序,我在 MainActivity 上使用材料 BottomNavigationView (navView)。 我在 MainActivity 上有一個 FloatingActionButton (fab)。 當我點擊一個 navView 項目時,除了導航到選定的片段之外,我還想更改 fab 上的圖標。 我想使用 navView 的默認導航行為,但是使用 navView.setOnItemSelectedListener(使用它來更改圖標),我失去了預期的基本行為,更改了片段。 返回 true 或 false 沒有幫助。
我想這樣做,並且還要更改片段。 如何使用 navView 的繼承行為進行導航
binding.navView.setOnItemSelectedListener {item ->
val str =item.itemId.toString()
Snackbar.make(binding.root, str, Snackbar.LENGTH_SHORT)
.setAction("Action", null)
.show()
return@setOnItemSelectedListener true // false, behavior appears the same
我不使用默認行為,我編寫了代碼來導航。
這將調用方法來導航到片段並為 fab 設置初始圖標
私人樂趣 setupNavController() { val navHostFragment = supportFragmentManager .findFragmentById(...) as NavHostFragment val navController = navHostFragment.navController NavigationUI.setupWithNavController( binding.navView, navController ) binding.navView.setOnItemSelectedListener {itemId(itemId) 當 ( { // 需要方法調用,因為不能在 fab in -> R.id.navigation_1 -> F1() R.id.navigation_2 -> F2() R.id.navigation_3 -> F3() R.id.navigation_4 -> F4() } return@setOnItemSelectedListener true } }
這響應晶圓廠的點擊
私人樂趣 setFabNavigationAndIcon() { val currentBottomMenuId = binding.navView.selectedItemId 當 (currentBottomMenuId) { R.id.navigation_dashboard -> {
val intent = Intent(this, AnActivity::class.java).apply { } startActivity(intent) } R.id.f1 -> { ... } R.id.f2 -> { binding.fragmentContainerView.findNavController() .navigate(... // 改變圖標
binding.fab.setImageDrawable( resources.getDrawable( ... baseContext.theme ) ) } R.id.f3 -> { binding.fragmentContainerView.findNavController().navigate(... // 更改圖標以便用戶可以返回列出
} }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.