3

我在一個活動中有兩個片段,我希望第一個從屏幕左側正常滑出視圖,而第二個片段則通過屏幕右側進入。我使用的轉換API,這是發生了什麼:片段轉換的問題

初始屏幕:

Initial screen

過渡不好時:下面

Transition occurs poorly

我的代碼給出:

HomeFragment savedHomeFragment = (HomeFragment) getSupportFragmentManager().findFragmentByTag(HOME_FRAGMENT); 

    if (savedHomeFragment == null) { 
     mHomeFragment = new HomeFragment(); 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
      mHomeFragment.setEnterTransition(new Fade(Fade.MODE_IN)); 
      mHomeFragment.setExitTransition(new Slide(Gravity.START)); 
     } 
     FragmentManager fragmentManager = getSupportFragmentManager(); 
     FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
     fragmentTransaction.add(R.id.placeholder, mHomeFragment, HOME_FRAGMENT); 
     fragmentTransaction.commit(); 
    } else { 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
      savedHomeFragment.setEnterTransition(new Fade(Fade.MODE_IN)); 
      savedHomeFragment.setExitTransition(new Slide(Gravity.START)); 
     } 
    } 

void buttonClick() { 
    TargetFragment targetFragment = new TargetFragment(); 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
     targetFragment.setEnterTransition(new Slide(Gravity.END)); 
    } 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.replace(R.id.placeholder, targetFragment , TARGET_FRAGMENT); 
    fragmentTransaction.addToBackStack(null); 
    fragmentTransaction.commit(); 
} 

我在做什麼錯?

回答

1

第一個片段上的按鈕放在沒有背景的容器上。您看到的白色背景是您活動的背景。在Fragment1佈局的根元素上提供背景顏色,問題將得到解決。

+1

哇,只是這個oneliner已經結束了我的研究周。非常感謝你的兒子。現在一切正常,只是活動片段似乎疊加在輸入片段上方。這可以解決嗎?喜歡讓一切順利進行。我的意思是讓傳入片段包含整個視圖,就像傳出片段正在離開一樣。 –