【Android界面实现】使用PagerSlidingTabStrip实现滑动标签同步的ViewPager效果

 前面已经有三篇文章介绍如何在ViewPager加上指示器了,这也是最后一篇介绍关于ViewPager的指示器的文章了。

    这篇文章介绍使用开源项目PagerSlidingTabStrip实现这种效果。这个开源项目和之前的ScrpllingTabs是同一个作者。

    下面我们首先看一下实现的效果。

 

    这种实现方式与前面的区别是,底部的颜色标签会随着ViewPager的滑动而跟着同步移动,比之前的实现方式,更加的生动。

    除此之外,代码编写和ScrollingTabs基本一样。

    首先是布局文件。

 

[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:app="http://schemas.android.com/apk/res-auto"  
  3.     xmlns:tools="http://schemas.android.com/tools"  
  4.     android:layout_width="match_parent"  
  5.     android:layout_height="match_parent" >  
  6.   
  7.     <com.astuetz.PagerSlidingTabStrip  
  8.         android:id="@+id/tabs"  
  9.         android:layout_width="match_parent"  
  10.         android:layout_height="48dip"  
  11.         android:background="@drawable/background_tabs" />  
  12.   
  13.     <android.support.v4.view.ViewPager  
  14.         android:id="@+id/pager"  
  15.         android:layout_width="match_parent"  
  16.         android:layout_height="wrap_content"  
  17.         android:layout_above="@+id/colors"  
  18.         android:layout_below="@+id/tabs"  
  19.         tools:context=".MainActivity" />  
  20.   
  21. </RelativeLayout>  


    在Activity里面,设置适配器就可以了

 

 

[java] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. @Override  
  2.     protected void onCreate(Bundle savedInstanceState) {  
  3.         super.onCreate(savedInstanceState);  
  4.         setContentView(R.layout.activity_main);  
  5.   
  6.         tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);  
  7.         pager = (ViewPager) findViewById(R.id.pager);  
  8.         adapter = new MyPagerAdapter(getSupportFragmentManager());  
  9.         pager.setAdapter(adapter);  
  10.                   
  11.         tabs.setViewPager(pager);  
  12.   
  13.     }  


    ViewPager的适配器

 

 

[java] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. public class MyPagerAdapter extends FragmentPagerAdapter {  
  2.   
  3.         private final String[] TITLES = { "Categories", "Home", "Top Paid", "Top Free", "Top Grossing", "Top New Paid",  
  4.                 "Top New Free", "Trending" };  
  5.   
  6.         public MyPagerAdapter(FragmentManager fm) {  
  7.             super(fm);  
  8.         }  
  9.   
  10.         @Override  
  11.         public CharSequence getPageTitle(int position) {  
  12.             return TITLES[position];  
  13.         }  
  14.   
  15.         @Override  
  16.         public int getCount() {  
  17.             return TITLES.length;  
  18.         }  
  19.   
  20.         @Override  
  21.         public Fragment getItem(int position) {  
  22.             return SuperAwesomeCardFragment.newInstance(position);  
  23.         }  
  24.   
  25.     }  


    github的项目地址:https://github.com/astuetz/PagerSlidingTabStrip

posted @ 2016-12-01 16:21  天涯海角路  阅读(101)  评论(0)    收藏  举报