(一)、给ViewPager设置标题
1、在Layout布局中加入ViewPager:
.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
2.在Activity中初始化ViewPager
ViewPager mPager=(ViewPager) findViewById(R.id.viewPager);
3.在Layout文件下创建ViewPager中所使用的内容View.xml文件
4.将Layout文件夹下的所有View文件全部转换为对象并添加到集合中
/**
* 获取所有的页卡
* @return
*/
private List getData() {
Listlist=new ArrayList();
// 加载所有的View内容
View view1=View.inflate(this, R.layout.view1, null);
View view2=View.inflate(this, R.layout.view2, null);
View view3=View.inflate(this, R.layout.view3, null);
View view4=View.inflate(this, R.layout.view4, null);
// 将所有的内容页View添加到集合中
list.add(view1);
list.add(view2);
list.add(view3);
list.add(view4);
return list;
}
5、创建一个类继承PagerAdatper
public class MyPagerAdapter extends PagerAdapter {}
6、重写PagerAdapter里面的方法
package com.pgw.viewpagerdemo;
import java.util.List;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
public class MyPagerAdapter extends PagerAdapter {
private List viewList;
private List titleData;
public MyPagerAdapter(List viewList, List tatileData) {
this.viewList = viewList;
this.titleData=tatileData;
}
// 获取页面的个数
@Override
public int getCount() {
// TODO Auto-generated method stub
return viewList.size();
}
// view和对象是否相等
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
// 实例化页面时调用
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(viewList.get(position));
return viewList.get(position);
}
// 销毁页面时调用
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(viewList.get(position));
}
}
7、在Activity中实例化MyPagerAdapter
//创建ViewPager适配器
MyPagerAdapter adapter=new myPagerAdapter(viewList,tatileData);
8、将创建好的适配器设置给VeiwPager
// 给ViewPager设置适配器
mPager.setAdapter(adapter);
(二)、给ViewPager设置标题
1、在ViewPager的Layout中加入PagerTabStrip
.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
.support.v4.view.PagerTabStrip
android:id="@+id/tab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top"
>
.support.v4.view.PagerTabStrip>
.support.v4.view.ViewPager>
2、在Activity中实例化PagerTabStrip并设置参数
// 初始化PagerTabStrip
mTitile=(PagerTabStrip)findViewById(R.id.tab);
// 设置背景色
mTitile.setBackgroundColor(Color.GRAY);
// 设置字体颜色
mTitile.setTextColor(Color.RED);
// 设置是否绘制下划线
mTitile.setDrawFullUnderline(false);
// 设置指示器颜色
mTitile.setTabIndicatorColor(0xff999999);
3、初始化所有的标题数据
List<String> list=new ArrayList<String>();
list.add("第一页");
list.add("第二页");
list.add("第三页");
list.add("第四页");
4、将集合传入MyPagerAdapter中,并重写getPageTatitle方法
// 设置标题
@Override
public CharSequence getPageTitle(int position) {
return titleData.get(position);
}
1、创建所有的Fragment
2、初始化所有的Fragment
/**
* 初始化所有的Fragment
* @return
*/
private List initFragmen() {
List list=new ArrayList();
list.add(new Fragment1());
list.add(new Fragment2());
list.add(new Fragment3());
list.add(new Fragment4());
return list;
}
3、创建一个类集成FragmentPagerAdatper
package com.pgw.viewpagerdemo;
import java.util.List;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.view.View;
import android.view.ViewGroup;
public class MyFragmentPagerAdapter extends FragmentPagerAdapter {
private List tatileList;
private List fragmentList;
public MyFragmentPagerAdapter(FragmentManager fm, List fragmentList, List tatileList) {
super(fm);
this.fragmentList=fragmentList;
this.tatileList=tatileList;
}
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public int getCount() {
return fragmentList.size();
}
@Override
public CharSequence getPageTitle(int position) {
return tatileList.get(position);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
return super.instantiateItem(container, position);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO Auto-generated method stub
super.destroyItem(container, position, object);
}
}
4、将MyFragmentPagerAdapter设置给ViewPager
// 创建FragmentPagerAdatper
MyFragmentPagerAdapter adapter=new myFragmentPagerAdapter(getSupportFragmentManager(),fragmentList,tatileList);
// 5.给ViewPager设置适配器
mPager.setAdapter(adapter);
5、给ViewPager添加事件
//注册事件
mPager.setOnPageChangeListener(this);
@Override
public void onPageScrollStateChanged(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
// 现在选择的页面
@Override
public void onPageSelected(int position) {
// TODO Auto-generated method stub
// 因为他的Position是从0开始
position++;
Toast.makeText(MainActivity.this, "当前是第"+position+"页", Toast.LENGTH_SHORT).show();
}
注意:
1、destroyItem方法中不能调用父类的destroyItem方法。 2、如果在MyFragmentPagerAdapter 中不重写instantiateItem和destroyItem,那么ViewPager就不会销毁Fragment
以上项目地址:VewPagerDemo地址