1、效果圖
B:表示viewpager
A:表示viewpager的父布局
B和B之間的紅線:表示viewpager兩個item之間的間距。
2、原理
B距離其父布局左右都有間隔,然後讓B的item不局限於其內部,即能存在於B的布局之外。同樣,A也要允許B不局限於A內部(clipChildren屬性)。然後,設置viewpager兩個item之間的距離即可(setPageMargin)。最後不要忘記在viewpager滑動後更新A界面。
3、實踐
[java]?view plain?copy
<LinearLayout?xmlns:android=
android:layout_width="match_parent"
android:id="@+id/viewPagerContainer"
android:layout_height="match_parent"
android:background="#EEEEEE"
android:clipChildren="false"
android:orientation="vertical"?>
<android.support.v4.view.ViewPager
android:id="@+id/viewpage"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="80dp"
android:layout_marginRight="80dp"
android:clipChildren="false"?/>
</LinearLayout>
[java]?view plain?copy
<span?style="white-space:pre"></span>pager.setOnPageChangeListener(new?MyOnPageChangeListener());
<span?style="white-space:pre"></span>?
//?pageCount設置紅緩存的頁面數?
pager.setOffscreenPageLimit(3);
//?設置2張圖之前的間距。
pager.setPageMargin(20);
public?class?MyOnPageChangeListener?implements?OnPageChangeListener?{
@Override
public?void?onPageSelected(int?position)?{
}
@Override
public?void?onPageScrolled(int?position,?float?positionOffset,?int?positionOffsetPixels)?{
//?to?refresh?frameLayout
if?(viewPagerContainer?!=?null)?{
viewPagerContainer.invalidate();
}
}
@Override
public?void?onPageScrollStateChanged(int?arg0)?{
}
}
4、特例viewpager + fragment
setPageMargin必須是壹個負數,才能實現兩個item之間的間隔,否則兩個item會重合~~~去實踐吧,騷年。
5、註意事項
1.FragmentPagerAdapter和FragmentStaticPagerAdapter區別:第壹個不會銷毀fragment本身,只會銷毀其視圖。對於需要保存數據的很有用。
2.不要在Fragment中定義getView()來獲取對應的視圖,getView是其默認的方法,換壹個名稱吧(如:getFragView)。
3.要想動態更改fragment的視圖,那妳必須等到viewpager.setAdapter之後~否則無效果,因為fragment還未創建~
更多相關內容可參考資料www.viiboo.cn?