
愛奇藝Banner.png
一、顯示多個(gè)page頁面(2種方法)
方法1:ViewPager設(shè)置外邊距+android:clipChildren="false"
<android.support.v4.view.ViewPager
...
android:clipChildren="false"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"/>
注意:父布局也要添加 android:clipChildren="false"屬性
方法2: ViewPager設(shè)置內(nèi)邊距+android:clipToPadding="false" 屬性
<android.support.v4.view.ViewPager
...
android:clipToPadding="false"
android:paddingLeft="30dp"
android:paddingRight="30dp"/>
android:clipChildren的意思:是否限制子View在其范圍內(nèi),我們將其值設(shè)置為false后那么當(dāng)子控件的高度高于父控件時(shí)也會(huì)完全顯示,而不會(huì)被壓縮
android:clipToPadding的意思:是否在padding內(nèi)繪制控件,默認(rèn)ture
- ViewPager設(shè)置外邊距
<android.support.v4.view.ViewPager
...
android:clipToPadding="false"
android:clipChildren="false"
android:paddingLeft="30dp"
android:paddingRight="30dp"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"/>
- ViewPager添加 android:clipChildren="false" 屬性
- ViewPager父布局添加 android:clipChildren="false" 屬性
android:clipChildren的意思:是否限制子View在其范圍內(nèi),我們將其值設(shè)置為false后那么當(dāng)子控件的高度高于父控件時(shí)也會(huì)完全顯示,而不會(huì)被壓縮
二、ViewPager設(shè)置
//表示設(shè)置page之間的間距
mViewPager.setPageMargin(getResources().getDimensionPixelSize(R.dimen.page_margin));
//表示設(shè)置緩存,這樣左右拖動(dòng)即可看見后面的page
mViewPager.setOffscreenPageLimit(2);//這里必須大于2,否則能看到邊側(cè)頁面加載的bug
三、所有頁面都有滑動(dòng)時(shí)間(默認(rèn)只有中間的有滑動(dòng)事件)
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
// to refresh frameLayout
if (mViewPagerPanent != null) {
mViewPagerPanent.invalidate();
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
mViewPagerPanent.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// dispatch the events to the ViewPager, to solve the problem that we can swipe only the middle view.
return mViewPager.dispatchTouchEvent(event);
}
});
可能運(yùn)行后出現(xiàn)viewpager的部分page頁面無法看見或是突然消失的問題。
- 1、請(qǐng)確保ViewPager和父布局的android:clipChildren都設(shè)置為了false并且
- 2、viewPager.setOffscreenPageLimit(count);其中count大于0。
- 3、viewpager設(shè)置了paddingTop也會(huì)導(dǎo)致無法實(shí)現(xiàn)畫廊而只是顯示一屏。