一、实现逻辑:
1、布局中加入ViewPager。2、加载要显示的页卡。3、设置适配器。
二、代码实现
1、布局中加入ViewPager,这个组件是用来显示左右滑动的界面的,如果不加载页卡,他是不显示内容的。
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
2、加载要显示的页卡
1)新建xml
<ImageView
android:id="@+id/iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
2)将xml加载到页卡,viewList中存放的是要在ViewPager中显示的内容。如果要改变每页的数据,可以在此处更改
viewList=new ArrayList<View>();
//加载view
View view1=LayoutInflater.from(this).inflate(R.layout.test, null);
view1.findViewById(R.id.iv).setBackgroundResource(R.drawable.ic_launcher);
View view2=LayoutInflater.from(this).inflate(R.layout.test, null);
view2.findViewById(R.id.iv).setBackgroundResource(R.drawable.bestbang_head2);
viewList.add(view1);
viewList.add(view2);
3)配置适配器。将数据、适配器和ViewPager关联。
谷歌建议ViewPager和Fragment一起使用。实现一个PagerAdapter,必须至少覆盖以下方法:
①getCount()、②destroyItem(ViewGroup, int, Object)、③instantiateItem(ViewGroup, int)、④isViewFromObject(View, Object)
MyPagerAdapter adapter=new MyPagerAdapter();
viewPager.setAdapter(adapter);
class MyPagerAdapter extends PagerAdapter{
@Override
public int getCount() {
return viewList.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;//官方提示这样写
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(viewList.get(position));//删除页卡
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(viewList.get(position));//添加页卡
return viewList.get(position);
}
}
三、PagerTabStrip和PagerTitleStrip
他俩都是ViewPager的指示器。PagerTabStrip效果是一个横的粗的下划线(带标题),PagerTitleStrip是用来显示各个页卡的标题。
用法:首先在xml中配置,然后在适配器里加载数据。
1) <android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<android.support.v4.view.PagerTitleStrip
android:id="@+id/pagertitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone" />
<android.support.v4.view.PagerTabStrip
android:id="@+id/pagertab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</android.support.v4.view.ViewPager>
2)@Override
public CharSequence getPageTitle(int position) {
return titleList.get(position);//titleList=new ArrayList<String>();标题
}//适配器里重写此方法
pagerTabStrip.setTabIndicatorColor(getResources().getColor(R.color.gold));//设置指示器的颜色
pagerTabStrip.setBackgroundColor(getResources().getColor(R.color.azure)); //设置标题背景色
pagerTabStrip.setTextSpacing(50);//设置间距无效,不知道为什么。
此种方式优点:页卡随着标题移动。缺点:无法设置标题间距,标题随着页卡消失而消失,不能固定显示。