簡體   English   中英

帶有操作欄圖標點擊的 NavigationUI 導致片段淡入淡出

[英]NavigationUI with actionbar icon clicks result in fragments fading in and out

我有一個帶有圖標的操作欄,單擊該圖標時,會在屏幕上顯示相應的片段。 這與導航圖無關。 當在操作欄中單擊相應的圖標時,我正在使用NavigationUI.onNavDestinationSelected方法導航到相應的片段。 當我使用導航圖通過片段內的按鈕單擊操作等在片段之間導航時,沒有動畫,但是當我單擊操作欄圖標時,它會導致相應的片段緩慢地淡入淡出。 我該怎么做才能禁用它?

包含 NavHostFragment 的主要活動:

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import androidx.navigation.NavController
import androidx.navigation.Navigation
import androidx.navigation.ui.NavigationUI
import com.google.android.material.snackbar.Snackbar

class MainActivity : AppCompatActivity() {

    private lateinit var navController: NavController

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.main_activity)

        navController = Navigation.findNavController(this, R.id.navHostFragment)

        NavigationUI.setupActionBarWithNavController(this, navController)

        //supportActionBar?.setDisplayHomeAsUpEnabled(true)
        //setSupportActionBar(toolbar)
    }

    override fun onSupportNavigateUp(): Boolean {

        onBackPressed()
        return true

    }

    //TODO: add options in overflow menu to add new category and a new task
    override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        menuInflater.inflate(R.menu.main_menu, menu)
        return super.onCreateOptionsMenu(menu)
    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {

        when (item.itemId)
        {
            R.id.app_settings -> {

                //just to test it out
                Snackbar.make(findViewById(R.id.main_activity_container), "app settings option clicked", Snackbar.LENGTH_LONG).show()
                true}

            R.id.main_pomo_settings -> {

                //just to test it out
                Snackbar.make(findViewById(R.id.main_activity_container), "pomo settings option clicked", Snackbar.LENGTH_LONG).show()
                true}
        }

        return NavigationUI.onNavDestinationSelected(item!!, navController)  || super.onOptionsItemSelected(item)
    }
}

我找到了我自己問題的解決方案。 您必須通過在 anim 文件夾中創建以下空動畫文件來禁用動畫:

res/anim/nav_default_enter_anim.xml

res/anim/nav_default_exit_anim.xml

res/anim/nav_default_pop_enter_anim.xml

res/anim/nav_default_pop_exit_anim.xml

  1. 右鍵單擊 res 文件夾(如果不存在 anim 文件夾)並選擇New -> Android Resource File
  2. 為資源類型選擇動畫
  3. 鍵入nav_default_enter_anim作為文件名,然后單擊“確定”。
  4. 對其他文件重復此操作,但這次右鍵單擊 anim 文件夾。

所有文件中只應包含以下內容:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <!--Empty to disable animation-->
</set>

這是對我有幫助的 stackoverflow 答案: https : //stackoverflow.com/a/56306166/10259491

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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