先看效果图, 简单说下viewpage的pagerAdapter的几个方法的用法
贴上代码
//viewpage的适配器 class MyViewPageAdapter extends PagerAdapter{ @Override public int getCount() { return mainTitlesArray.length; } //判断是否是否为同一张图片,这里返回方法中的两个参数做比较就可以 @Override public boolean isViewFromObject(View view, Object object) { return view==object; } //设置viewpage内部东西的方法,如果viewpage内没有子空间滑动产生不了动画效果 @Override public Object instantiateItem(ViewGroup container, int position) { TextView textView = new TextView(MainActivity.this); textView.setText(mainTitlesArray[position]); textView.setGravity(Gravity.CENTER); container.addView(textView); //最后要返回的是控件本身 return textView; } //因为它默认是看三张图片,第四张图片的时候就会报错,还有就是不要返回父类的作用 @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); // super.destroyItem(container, position, object);//返回父类 默认是看三张图片 } //目的是展示title上的文字, @Override public CharSequence getPageTitle(int position) { return mainTitlesArray[position]; } }一般来说它默认重写的方法只有两个
@Override public int getCount() {}和
@Override public boolean isViewFromObject(View view, Object object) { }这两个方法一个是返回viewpager页面的个数,一个是判断是否为同一张图片
但是这里这样还做不到viewpage滑动的效果, 还需要再加上
public Object instantiateItem(ViewGroup container, int position) {} public void destroyItem(ViewGroup container, int position, Object object) {} public CharSequence getPageTitle(int position) {}三个方法
instantiateItem()是用于往viewpage中添加控件,添加内容
destroyItem()是加入页面的时候,默认缓存三个,如不做处理,滑多了程序就会蹦
getPageTitle是展示和viewpager上面tltle的展示文字的效果 最后还有就是tablayout和viewpager绑定的代码
最后还有就是tablayout和viewpager绑定的代码
//TabLayout和viewpage绑定 tabLayout.setupWithViewPager(viewPage);写的比较粗糙,文本格式没有把控好, 先做好内容
转:https://blog.csdn.net/printlndeng/article/details/80015470