Android共享元素转换不适用于<include>标记

时间:2016-09-26 21:38:21

标签: android android-layout shared-element-transition

我一直在使用ActivityOptionsCompat.makeSceneTransitionAnimation()ActivityCompat.startActivityForResult()在我的应用中使用共享元素转换,并使用以下某些XML代码:

...

<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:transitionName="@string/transition_1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingTop="16sp"
    android:paddingBottom="16sp">

    ...

</android.support.v7.widget.CardView>

...

这里的一切都很棒。

但是,由于我多次使用CardView内的内容,因此我决定将其移至新布局并使用<include>来引用它。

这是新的布局文件:

<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    ...

</android.support.v7.widget.CardView>

旧文件:

...

<include layout="@layout/my_card_content"
    android:transitionName="@string/transition_1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingTop="16sp"
    android:paddingBottom="16sp" />

...

现在,出于某种原因,共享元素转换似乎不起作用。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

原来问题是因为我需要在我的卡的布局中包含android:transitionName,以便我的卡片布局如下所示:

<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:transitionName="@string/transition_1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    ...

</android.support.v7.widget.CardView>

意味着我的<include>代码中不需要它:

<include layout="@layout/my_card_content"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingTop="16sp"
    android:paddingBottom="16sp" />