簡體   English   中英

使用 BottomNavigationView 更改 FloatingActionButton 圖標

[英]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

我不使用默認行為,我編寫了代碼來導航。

  1. 這將調用方法來導航到片段並為 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 } }

  2. 這響應晶圓廠的點擊

    私人樂趣 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM