viewpager+fragment组合,一屏显示多个子页

最近项目需要做一个类似Gallery画廊效果的功能,因每个页面布局控件比较多,所以就想到用viewpager+fragment的效果实现。效果如下图:


Screenshot_20190625-132722.jpg

1设置clipChildren属性

这个属性是我们平时很少用到的,但很有用,特别是做动画的时候。android:clipChildren默认为true,其作用“是否允许子View超出父View的范围”。在viewpager里设置为true时,超出当前页面的左右页面不会被显示,会用空白代替。反之为false时,超出当前页面的左右页面可以正常显示

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clipChildren="false"
    android:layerType="software"
    android:id="@+id/view_pager_container">
    <include layout="@layout/layout_title"/>
    <android.support.v4.view.ViewPager
        android:id="@+id/sign_viewpager"
        android:layout_below="@+id/title_root"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="50dp"
        android:layout_marginRight="50dp"
        android:clipChildren="false">
    </android.support.v4.view.ViewPager>
</RelativeLayout>

2 设置左右页面缓存

viewPager.setOffscreenPageLimit(3);
要显示左右两个子页面,最少缓存3个,不建议太多,太会加大内存消耗。

3 设置子页面左右的间距

除了这个页面设置,同时要在布局文件设置 android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"

 viewPager.setPageMargin(80);

4 Adapter实现

public class SignDetailPagerAdapter extends FragmentPagerAdapter {

    public SignDetailPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        String bean = data.get(position);
        return SignDetailFragment.newInstance(bean);
    }

    @Override
    public int getCount() {
        return data.size();
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        SignDetailFragment fragment = (SignDetailFragment) super.instantiateItem(container, position);       
        String bean = data.get(position);
        fragment.updateArguments(bean);          
        return fragment;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容