Введите переход по фрагменту с общим элементом, предназначенным для общего элемента

Я использую новый Lollipop api для setEnterTransition на фрагменте, а затем добавляю общий переход элемента для изображения в фрагменте. Желаемое поведение во-первых, изображение должно перейти в свое положение, после чего остальные фрагменты фрагмента должны затухать.

Тем не менее, enterTransition применяется к общему элементу, поэтому он исчезает вместе с остальными видами. Если я не устанавливаю enterTransition, изображение правильно перемещается, но при перемещении другого содержимого уже видно.

Как мне заставить его не применять enterTransition к общему виду?

Я нашел эту фиксацию в AOSP, которая, похоже, должна решить эту проблему, но она, похоже, не работает.

Вот пример кода:

 public class Fragment1 extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.main_fragment, container, false); final ImageView imageView = (ImageView) rootView.findViewById(R.id.image); final Button button = (Button) rootView.findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { TransitionSet transitionSet = new TransitionSet(); transitionSet.addTransition(new ChangeImageTransform()); transitionSet.addTransition(new ChangeBounds()); transitionSet.setDuration(300); Fragment fragment2 = new Fragment2(); fragment2.setSharedElementEnterTransition(transitionSet); fragment2.setSharedElementReturnTransition(transitionSet); Fade fade = new Fade(); fade.setStartDelay(300); fragment2.setEnterTransition(fade); getFragmentManager().beginTransaction() .replace(R.id.container, fragment2) .addSharedElement(imageView, "SharedImage") .commit(); } }); return rootView; } } 

Переход ввода не должен применяться к представлениям общего элемента. Наиболее вероятный сценарий заключается в том, что ваш общий элемент находится в другом представлении с фоном, что делает этот вид затронутым вступлением. Вот такая ситуация:

 <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#FFF" > <ImageView android:src="@drawable/pretty_picture" android:layout_width="wrap_content" android:layout_height="wrap_content" android:transitionName="picture" android:padding="20dp"/> </FrameLayout> 

Здесь ImageView является общим элементом.

Если это произойдет, вам нужно добавить волшебный переход: ChangeTransform. Если он обнаруживает, что родительский элемент изменяется, он вытаскивает общий элемент из родителя и переводит его отдельно.