android viewPager 的基本使用

使用viewpager时一般需要使用PagerTitleStrip类和PagerTabStrip 类,PagerTitleStrip类继承自ViewGroup类,

而PagerTabStrip类继承PagerTitleStrip类,这两 个类是容器类。注意,在定义XML的layout的时候,这两个类必须是ViewPager的子标签,不然会出错。

布局文件XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <android.support.v4.view.PagerTabStrip
            android:id="@+id/tabstrip"
            android:layout_width="wrap_content"
            android:layout_height="30dip"
            android:gravity="center" />
    </android.support.v4.view.ViewPager>

</RelativeLayout>

 MainActivity.class:

public class MainActivity extends AppCompatActivity {

    private ViewPager pager;
    private PagerTabStrip tabStrip;
    private List<View> viewContainter = new ArrayList<View>();
    private List<String> titleContainer = new ArrayList<String>();
    private String TAG = "MainActivity";

    @SuppressLint("ResourceAsColor")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        pager = (ViewPager) findViewById(R.id.viewpager);
        tabStrip = (PagerTabStrip) findViewById(R.id.tabstrip);

        View view1 = LayoutInflater.from(this).inflate(R.layout.tab_item1, null);
        View view2 = LayoutInflater.from(this).inflate(R.layout.tab_item2, null);
        View view3 = LayoutInflater.from(this).inflate(R.layout.tab_item3, null);
        View view4 = LayoutInflater.from(this).inflate(R.layout.tab_item4, null);

        //viewpager开始添加view
        viewContainter.add(view1);
        viewContainter.add(view2);
        viewContainter.add(view3);
        viewContainter.add(view4);

        //页签项
        titleContainer.add("title1");
        titleContainer.add("title2");
        titleContainer.add("title3");
        titleContainer.add("title4");

        //设置ViewPager控件的适配器
        pager.setAdapter(new PagerAdapter() {

            //viewpager中的组件数量
            @Override
            public int getCount() {
                return viewContainter.size();
            }

            @Override
            public boolean isViewFromObject(View arg0, Object arg1) {
                return arg0 == arg1;
            }

            //销毁position位置的界面
            @Override
            public void destroyItem(ViewGroup container, int position,
                                    Object object) {
                ((ViewPager) container).removeView(viewContainter.get(position));
            }

            //初始化position位置的界面,每次滑动的时候生成的组件
            @Override
            public Object instantiateItem(ViewGroup container, int position) {
                ((ViewPager) container).addView(viewContainter.get(position));
                return viewContainter.get(position);
            }

            @Override
            public CharSequence getPageTitle(int position) {
                return titleContainer.get(position);
            }

            @Override
            public int getItemPosition(Object object) {
                return super.getItemPosition(object);
            }

        });

        pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrollStateChanged(int arg0) {

            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {

            }

            @Override
            public void onPageSelected(int arg0) {

            }
        });

    }

}
原文地址:https://www.cnblogs.com/IT-lss/p/5673821.html