我有一个带有物品清单的RecyclerView。单击该项目时,将打开一个片段。
我正在尝试从商品列表中创建标题,以便与我要打开的新片段进行共享过渡。问题在于,由于某种原因,共享元素转换无法正常工作,而被忽略。
我通过以下方式启动片段(当用户单击列表中的项目时):
@Override
public void onItemClick( int position, View container )
{
FragmentItemView fragment = new FragmentItemView();
TextView txtTitle = container.findViewById( R.id.txtTitle );
fragment.setSharedElementEnterTransition(TransitionInflater.from(getActivity()).inflateTransition(R.transition.def));
fragment.setEnterTransition(TransitionInflater.from(getActivity()).inflateTransition(android.R.transition.explode));
getFragmentManager()
.beginTransaction()
.addSharedElement(txtTitle, ( "transition_title" ) )
.add(R.id.frame_layout, fragment )
.addToBackStack(null)
.commit();
}
这是我用于setSharedElementEnterTransition(R.transition.def)的过渡:
<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
<changeTransform />
<changeBounds />
</transitionSet>
这是被RecyclerView.ViewHolder夸大的项目,我已经将'transitionName'设置为'transition_title':
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="150dp"
android:layout_margin="5dp"
android:background="#446699"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:id="@+id/txtTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16dp"
android:fontFamily="sans-serif-bold"
android:transitionName="transition_title"
android:text="Item"/>
</LinearLayout>
这是目标片段(FragmentItemView,目标片段)的布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/fragment_item_view"
tools:context=".ActivitySettings"
android:clickable="true"
>
<TextView
android:id="@+id/txtTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16dp"
android:fontFamily="sans-serif-bold"
android:transitionName="transition_title"
android:text="Item"/>
</RelativeLayout>
最后这是第一个片段,在其中托管了RecyclerView,然后从中打开第二个片段:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/frame_layout"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ActivitySettings">
<android.support.v7.widget.RecyclerView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_margin="5dp"
android:id="@+id/recycler_view">
</android.support.v7.widget.RecyclerView>
</RelativeLayout>
</FrameLayout>
我看到片段过渡有效,但共享元素过渡无效。请问我缺少什么提示?谢谢!