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); } }
他俩都是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);//设置间距无效,不知道为什么。
此种方式优点:页卡随着标题移动。缺点:无法设置标题间距,标题随着页卡消失而消失,不能固定显示。