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