2015-06-11 40 views
4

我在ViewPager中有兩個片段,我的要求是第一次在第一個片段中顯示第二個片段的某些部分,以便讓用戶知道還有一個頁面。 一旦用戶滑動到下一頁並返回到第一個,第一個片段應占用全屏(不只是90%)。所以,我一直保留着一個標誌,以檢查它是否是第一次還是沒有和返回右頁寬 -Android ViewPager適配器 - 每次強制getPageWidth

public float getPageWidth(int position) { 
    if (position == 0 && isPatiallyShowNextItem) { 
     return 0.9f; 
    } 
    isPatiallyShowNextItem = false; 
    return 1f; 
} 

問題是getPageWidth()被調用一次和第一個片段始終只佔據90%的屏幕,當用戶滑動到下一個片段時,如何強制getPageWidth,或者當用戶移動到第二頁後,讓第一個片段佔用屏幕的100%。 僅供參考 - 改變國旗後,我試過下面的電話,但沒有任何工作!

pagerAdapter.notifyDataSetChanged(); 
viewPager.requestLayout(); 
viewPager.invalidate(); 
+0

任何幫助將不勝感激! – Nag

回答

0

一個簡單的方法是使用ViewPager.PageTransformer。做這樣的事情,以達到90%的頁面顯示效果

public class PageRevealTransformer implements ViewPager.PageTransformer 
{ 

    @Override 
    public void transformPage(View page, float position) 
    { 
     int pageWidth = page.getWidth(); 
     if (position < -.9) 
     { 
      // TODO: do something when this condition is certisfied 
     } else if (position <= .5) 
     { 
      float newPageWidth = pageWidth/3; 
      page.setTranslationX(newPageWidth * -(position)); 
     } else 
     { 
      // TODO: do something when this condition is certified 
     } 
    } 
} 

,並應用到您的網頁適配器這樣

viewPager.setPageTransformer(真,新PageRevealTransformer());

得到你的邏輯,你很好去。您還可以查看完整的使用說明文檔http://developer.android.com/training/animation/screen-slide.html

相關問題