![](/img/trans.png)
[英]NavigationUI with BottomNavigationView and multiple fragments: disable ActionBar up/back button
[英]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
New -> Android Resource File
nav_default_enter_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.