Android常用控件之ViewPager

目录:android.support.v4.view.ViewPager

xml布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v4.view.ViewPager
        android:id="@+id/vp_viewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</RelativeLayout>

代码使用:

public class MainActivity extends AppCompatActivity {
    private ViewPager vp_viewPager;
    private List<View> list;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
    }

    private void init() {
        vp_viewPager = (ViewPager) findViewById(R.id.vp_viewPager);

        //子item是Fragment使用该适配器(推荐使用)
        vp_viewPager.setAdapter(new FmVpAdapter(getSupportFragmentManager()));

        //子item是view使用该适配器
//        list = new ArrayList<>();
//        for (int i = 0; i < 5; i++) {
//            TextView tv = new TextView(this);
//            tv.setText("我是界面"+i);
//            list.add(tv);
//        }
//        vp_viewPager.setAdapter(new VpAdapter(list));
        
    }

    //子item是Fragment使用该适配器
    private class FmVpAdapter extends FragmentPagerAdapter {
        public FmVpAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            return new VpFragment();//每个碎片都会被标识,使用过的碎片会被复用
        }

        @Override
        public int getCount() {
            return 3;//更换自己数据源数量
        }
    }


    //子item是view使用该适配器
    private class VpAdapter extends PagerAdapter{
        List<View> list;

        public VpAdapter(List<View> list) {
            this.list = list;
        }

        @Override
        public int getCount() {
            return list.size();
        }
        @Override
        public boolean isViewFromObject(View arg0, Object arg1) {
            return arg0==arg1;
        }
        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            container.addView(list.get(position));
            return list.get(position);
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            //.destroyItem(container, position, object);
            container.removeView(list.get(position));
        }
    }

}

碎片:

xml布局:fragment_vp_page.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/tv_page"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:text="碎片页面" />
</LinearLayout>

碎片

public class VpFragment extends Fragment {
    private View view;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.fragment_vp_page, null);
        init();
        return view;
    }

    private void init() {
        TextView tv_page = (TextView) view.findViewById(R.id.tv_page);

    }
}

注意:

1、Fragment导入的都是V4包的类

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,132评论 25 708
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,507评论 2 45
  • 今年真是和各种签证杠上了[Angry],从年初开始准备美国签证到等待结果到抽签失败,到新加坡签证过期差点耽误回家摆...
    c4b6c4e143e1阅读 203评论 1 1
  • Here We Are 看了《使徒行者》,里面有好多强行的逻辑,难受。 全影片我觉得最不错的就是片尾曲了。 我还以...
    杨花萝卜阅读 614评论 0 0
  • 禾宝假期第十天ing 艺术课走起 禾宝早上强烈要求去跟可儿上托管班,这是件多么好的事情!! 艺术课的老师表扬了禾宝...
    小别四月天阅读 196评论 0 0