Общие переходы элементов с компонентами навигации и FragmentContainerView

#android #android-fragments #android-architecture-navigation #shared-element-transition

#Android #android-фрагменты #android-архитектура-навигация #общий элемент-переход

Вопрос:

У меня есть общий переход элемента между двумя фрагментами, который отлично работал при использовании a NavHostFragment <fragment> в качестве контейнера для фрагментов моего навигационного графика.

В настоящее время кажется, что вместо <fragment> того, чтобы использовать <androidx.fragment.app.FragmentContainerView> , который предположительно приносит много исправлений, особенно в том, как обрабатываются переходы.

Однако для меня это нарушает все мои общие переходы элементов. Я определяю их следующим образом (переход от фрагмента A к фрагменту B):

fragment_a.xml

 <ImageView
    android:id="@ id/logo"
    android:transitionName="logo" />
  

fragment_b.xml

 <ImageView
    android:id="@ id/logo"
    android:transitionName="logo" />
  

FragmentA.kt

 navController.navigate(
    FragmentADirections.actionFragmentAToFragmentB(),
    FragmentNavigatorExtras(logoView to "logo")
)
  

FragmentB.kt

 override fun onCreate(savedInstanceState: Bundle?) {
    sharedElementEnterTransition = TransitionInflater.from(context).inflateTransition(R.transition.trans_logo_shared_element)
}
  

trans_logo_shared_element.xml

 <?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="375"
    android:interpolator="@android:interpolator/fast_out_slow_in"
    android:transitionOrdering="together">
    <changeClipBounds />
    <changeTransform />
    <changeBounds />
</transitionSet>
  

В документации FragmentContainerView говорится, что переходы отключены для контейнера для Android L и выше и что следует использовать FragmentTransaction.setCustomAnimations(int, int, int, int) вместо этого. Однако я не мог понять, как заставить общие переходы элементов с компонентами навигации работать с ним.

Комментарии:

1. вы нашли решение?

2. Нет, к сожалению, нет. 🙁