安卓片段导航自定义导航后退按钮



我需要导航一堆片段,并且我正在使用工具栏后退按钮向后导航。我可以覆盖按下的后退按钮来设置自定义动画,例如滑出吗?

下面是工具栏的代码。

private fun setupToolbar() {
val appBarConfiguration = AppBarConfiguration(navController.graph, drawer_layout)
val toolbar = toolbar as Toolbar
setSupportActionBar(toolbar)
toolbar.setupWithNavController(navController, appBarConfiguration)
val ab: ActionBar? = supportActionBar
ab?.setDisplayShowTitleEnabled(false) // disable the default title element here (for centered title)
setupSearchQueryListener()
}

在您的设置代码中,还需要一件事:

toolbar.setNavigationOnClickListener {
onBackPressedDispatcher.onBackPressed() 
}

在您的片段中,您可以这样做:

protected lateinit var backPressedCallback: OnBackPressedCallback
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
backPressedCallback = requireActivity().onBackPressedDispatcher.addCallback(this) {
// your code
}
}

以上将使您能够统一拦截后退导航并执行有问题的代码(您甚至可以通过玩backPressedCallback.isEnabled标志来阻止/取消阻止它(。以上经过测试。说到设置导航动画,我只是在玩xml定义的基于动作的动画:

<action
android:id="@+id/toYourDest"
app:destination="@+id/yourDest"
app:enterAnim="@anim/your_slide_in_right"
app:exitAnim="@anim/your_slide_out_left"
app:popEnterAnim="@anim/your_slide_in_left"
app:popExitAnim="@anim/your_slide_out_right" />

最新更新