2016-12-06 16 views
1

に戻る: screenshotRecyclerView共有要素の遷移が、私はこのようになりますRecyclerViewを持っている私のアプリでは異なる位置

各項目は一つのメッセージを表し、未読メッセージは常にリストの一番上に表示されます。アイテムをクリックすると、フラグメント全体が対応するDetailsFragmentに置き換えられます。私はリスト項目の背景から詳細のフラグメントの背景に共有要素の遷移を設定して、 "展開"効果を作りました。選択されたメッセージが既に読み込まれているときにはうまく動作します。ただし、未読のメッセージを開いた場合は、読み取り済みとマークされ、リスト内の位置が変更されます。 RecyclerViewでフラグメントに戻ろうとすると、共有要素の遷移は実行されません。デフォルトの遷移(フェード)で詳細フラグメントが消えます。 ドキュメントを検索しましたが、共有要素の遷移は実際にはうまく文書化されていません。誰もがこの問題の解決策または回避策を知っていますか? (一意のメッセージIDの構成)

@Override 
     public void onItemClick(View view, int position) { 
       FragmentManager fragmentManager = getFragmentManager(); 
       FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
       MessageDetailsFragment fragment = MessageDetailsFragment.newInstance(message); 
       RelativeLayout background = (RelativeLayout) view.findViewById(R.id.three_line_list_item_background); 

       TransitionInflater transitionInflater = TransitionInflater.from(getContext()); 
       Transition t = new Fade(); 
       Transition details_enter = transitionInflater.inflateTransition(R.transition.details_enter); 
       Transition details_exit = transitionInflater.inflateTransition(R.transition.details_exit); 

       fragment.setSharedElementEnterTransition(details_enter); 
       fragment.setSharedElementReturnTransition(details_exit); 
       setSharedElementEnterTransition(details_enter); 
       setSharedElementReturnTransition(details_exit); 

       fragment.setExitTransition(t); 
       fragment.setEnterTransition(t); 
       fragment.setReturnTransition(t); 
       fragment.setReenterTransition(t); 

       setEnterTransition(t); 
       setExitTransition(t); 
       setReturnTransition(t); 
       setReenterTransition(t); 

       fragmentTransaction.addSharedElement(background, background.getTransitionName()); 
       fragmentTransaction.addToBackStack(null).commit(); 
       fragmentTransaction.replace(((ViewGroup) getView().getParent()).getId(), fragment); 
     } 

トランジション名がRecyclerViewアダプタのonBindViewHolder()とDetailFragmentのonCreateView()

にプログラム的に設定されています

編集:次のように私はRecyclerViewのonClickの遷移を設定します

+0

しかし、コードはどこですか? – AlphaQ

答えて

0

さて、問題を特定しました。最終ビューが画面の外にあり、描画されていないときは、トランジションは再生されません。

関連する問題