简单说下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和viewpage绑定 tabLayout.setupWithViewPager(viewPage);
写的比较粗糙,文本格式没有把控好, 先做好内容