片段共享过渡不起作用

时间:2018-08-13 22:14:53

标签: android-fragments

我有一个带有物品清单的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>

我看到片段过渡有效,但共享元素过渡无效。请问我缺少什么提示?谢谢!

0 个答案:

没有答案