2016-12-06 96 views
1

在我的應用程序我有一個RecyclerView看起來像這樣: screenshotRecyclerView共享元素的過渡 - 返回到不同位置

每一項代表一個消息;未讀消息總是出現在列表的頂部。如果你點擊任何項目,整個片段將被替換爲相應的DetailsFragment。我已經設置了一個從列表項背景到細節片段背景的共享元素轉換,以實現「擴展」效果。當選定的信息已經被閱讀時,它可以很好地工作;但是,如果您打開未讀郵件,則會將其標記爲已讀,從而更改列表中的位置。如果您嘗試使用RecyclerView返回片段,則不會播放共享元素轉換:細節片段隨着默認轉換(淡入淡出)而消失。 我搜索了文檔,但共享元素轉換沒有很好地記錄。有誰知道這個問題的任何解決方案或解決方法?

編輯:我成立了過渡的RecyclerView的的onClick如下:

@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); 
     } 

過渡名稱(唯一消息ID組成)在RecyclerView適配器的onBindViewHolder()和DetailFragment的onCreateView()

編程設置
+0

但代碼在哪裏呢? – AlphaQ

回答

0

好的,我確定了這個問題。當最終視圖位於屏幕之外並且未繪製時,轉換不起作用。

相關問題