详解Android App中创建ViewPager组件的方法

2019-12-10 18:37:27于丽

  (1) 

LayoutInflater lf getLayoutInflater().from(this);
  lf.inflate(resource,root);

  (2)

View.inflate(context,resource,root);

③ 配置Adapter(三种Adapter)

 (1)PagerAdapter 数据源:List<View>
 (2)FragmentPagerAdapter 数据源:List<Fragment>
 (3)FragmentStatePagerAdapter 数据源:List<Fragment>
二、代码示例
新建四个Fragment和他们的布局下面是MainActivity的xml布局:

<android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center" >

    <android.support.v4.view.PagerTabStrip
      android:id="@+id/tab"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="top" >
    </android.support.v4.view.PagerTabStrip>
    <!-- 底部显示标题与上面的顶部显示不能同时出现
    <android.support.v4.view.PagerTitleStrip
      android:id="@+id/title"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="bottom" >
    </android.support.v4.view.PagerTitleStrip>
    -->
  </android.support.v4.view.ViewPager>

第一种PagerAdapter

public class MyPagerAdapter extends PagerAdapter {

  private List<View> viewList;
  private List<String> titleList;

  public MyPagerAdapter(List<View> viewList,List<String> titleList){
    this.viewList = viewList;
    this.titleList = titleList;
  }

  /**
   * 返回页卡的数量
   */
  @Override
  public int getCount() {

    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));

  }

  /**
   * 设置ViewPager的标题
   */
  @Override
  public CharSequence getPageTitle(int position) {

    return titleList.get(position);
  }

}