一,建立一个布局如下
其中android.support.v4.view是需要通过导入的外部包,一般也会有自带
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<android.support.v4.view.PagerTabStrip
android:id="@+id/pagerTabStrip"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
</android.support.v4.view.PagerTabStrip>
</android.support.v4.view.ViewPager>
二、在Activity中编写主要代码
主要注意自定义适配器,通过继承PagerAdapter来实现,并且还要另外重写instantiateItem,destroyItem和getPageTitle这三方法,instantiateItem布局实例化,destroyItem布局的移除,getPageTitle将数据添加到适配器中
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = (ViewPager) findViewById(R.id.viewpager);
listdata = new ArrayList<String>();
listdata.add("记录");
listdata.add("联系人");
listdata.add("收藏夹");
listdata.add("群组");
tabStrip = (PagerTabStrip) findViewById(R.id.pagerTabStrip);
// 设置导航的一些属性。
//设置背景颜色
tabStrip.setBackgroundColor(getResources().getColor(R.color.deep_blue));
//设置文字颜色
tabStrip.setTextColor(getResources().getColor(R.color.write));
//设置选中文字下边的颜色
tabStrip.setTabIndicatorColor(getResources().getColor(R.color.light_blue));
tabStrip.setDrawFullUnderline(true);
tabStrip.setTextSpacing(50);
LayoutInflater inflater = getLayoutInflater();
View view = inflater.inflate(R.layout.layout_view1, null);
data.add(view);
View view2 = inflater.inflate(R.layout.layout_view2, null);
data.add(view2);
View view3 = inflater.inflate(R.layout.layout_view3, null);
data.add(view3);
View view4 = inflater.inflate(R.layout.layout_view4, null);
data.add(view4);
viewPager.setAdapter(new MyAdapter(data));
}
class MyAdapter extends PagerAdapter{
private List<View>list ;
public MyAdapter(List<View> list) {
super();
this.list = list;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
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) {
container.removeView(list.get(position));
}
// 重写一个方法。 返回tab的文字。
@Override
public CharSequence getPageTitle(int position) {
// TODO Auto-generated method stub
return listdata.get(position);
}
}