我一直在使用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" />
...
现在,出于某种原因,共享元素转换似乎不起作用。
我该如何解决这个问题?
答案 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" />