我一直在使用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" />
...
现在,由于某种原因,共享元素过渡似乎不起作用。
我应该如何解决这个问题?
最佳答案
原来的问题是因为我需要在布局中包含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" />