在 BottomNavigationView 和导航组件中切换导航堆栈时避免使用自定义动画?

Avoid using custom animations when switching navigation stacks in BottomNavigationView and navigation component?

提问人:rbrn 提问时间:11/8/2023 最后编辑:rbrn 更新时间:11/9/2023 访问量:23

问:

我有一个使用导航组件的组件,它使用BottomNavigationViewbottomNavigation.setupWithNavController(this.navHostFragment.navController)

它有两个项目:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/tab1"
        android:title="@string/tab1title" />

    <item
        android:id="@+id/tab2"
        android:title="@string/tab2title" />
</menu>

导航图的定义如下:

<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/navigation"
    app:startDestination="@+id/tab1">

    <include app:graph="@navigation/tab1"/>
    <include app:graph="@navigation/tab2"/>
</navigation>

内部导航,并通过堆叠使用动作呈现的片段来工作,这些动作具有自定义动画:tab1tab2

    <action
        android:id="@+id/open_fragment_1"
        app:destination="@id/fragment1"
        app:enterAnim="@anim/slide_in_right"
        app:exitAnim="@anim/slide_out_left"
        app:popEnterAnim="@anim/slide_in_left"
        app:popExitAnim="@anim/slide_out_right"/>

通过此设置,我有两个导航堆栈,在切换选项卡时可以正确保存和恢复。

问题是,当我从一个选项卡导航到另一个选项卡时,如果任何导航堆栈中都堆叠了片段,则将使用用于呈现顶部片段的自定义动画,而不是使用切换选项卡时应使用的默认动画。例如,如果呈现在 中,并且用户从 到 动画中将有一张幻灯片,因为这是 中定义的内容。actionfragment1tab1tab2tab1open_fragment_1

我尝试使用所有定义的动画来定义我自己的动画,但这些仅适用于 和 的根片段。R.animatornav_default_*tab1tab2

我怎样才能实现正确的行为?

编辑:这似乎是一个错误->https://issuetracker.google.com/issues/194113170

Android 导航 BottomNavigationView

评论


答: 暂无答案