Reprint Please specify source: http://blog.csdn.net/zhaokaiqiang1992
in the previous article, we used the Pagertabstrip in the support package to implement the Viewpager effect of sliding labels, and today we'll introduce another open source project to achieve similar results.
In this article, we will use the third-party open source project Viewpagerextensions implementation.
First look at the effect
Viewpagerextensions's github address: https://github.com/astuetz/ViewPagerExtensions
First give the directory structure of the entire project
in this demo, I directly put the resource files in the project, easy to use.
First, let's take a look at the layout file activity_main.xml.
<?xml version= "1.0" encoding= "Utf-8"? ><linearlayout xmlns:android= "http://schemas.android.com/apk/res/ Android " xmlns:tools=" Http://schemas.android.com/tools " xmlns:app=" http://schemas.android.com/ Com.heli17.tradeshowcloud " android:layout_width=" match_parent " android:layout_height=" Match_parent " android:orientation= "vertical" > <com.astuetz.viewpager.extensions.scrollingtabsview android : id= "@+id/scrolling_tabs" android:layout_width= "fill_parent" android:layout_height= "38DP" android: background= "@drawable/tab_unselected_holo" app:dividerdrawable= "@android: Color/white"/> < Android.support.v4.view.ViewPager android:id= "@+id/pager" android:layout_width= "Fill_parent " android:layout_height= "Fill_parent"/></linearlayout>
In the layout file, we added a Scrollingtabsview control, which is the custom control for the indicator above.
Once the layout is written, we can set up the adapter in the code.
The code is as follows:
Package Com.example.scrollingtabsdemo;import Java.util.arraylist;import Android.app.activity;import Android.os.bundle;import Android.support.v4.app.fragment;import Android.support.v4.app.fragmentactivity;import Android.support.v4.app.fragmentmanager;import Android.support.v4.app.fragmentstatepageradapter;import Android.support.v4.view.viewpager;import Android.view.view;import Android.widget.button;import Com.astuetz.viewpager.extensions.scrollingtabsview;import Com.astuetz.viewpager.extensions.tabsadapter;public Class Mainactivity extends Fragmentactivity {private Viewpager viewpager;private Scrollingtabsadapter Scrollingtabsadapter;private Scrollingtabsview scrollingtabs;private fragsadapter pagerAdapter; @Overrideprotected void OnCreate (Bundle savedinstancestate) {super.oncreate (savedinstancestate); Setcontentview (r.layout.activity_ Main); Viewpager = (Viewpager) Findviewbyid (R.id.pager);//Set Adapter Pageradapter = new Fragsadapter ( Getsupportfragmentmanager ()); Viewpager.setadapter (pageradapteR);//Set the number of cache fragment Viewpager.setoffscreenpagelimit (2); Viewpager.setcurrentitem (0); Viewpager.setpagemargin (4); Scrollingtabsadapter = new Scrollingtabsadapter (this);//Set the sliding label adapter and host Viewpagerscrollingtabs = (Scrollingtabsview) Findviewbyid (R.id.scrolling_tabs); Scrollingtabs.setadapter (Scrollingtabsadapter); ScrollingTabs.setViewPager ( Viewpager);} /** * Viewpager Adapter * * @author Zhaokaiqiang * */private class Fragsadapter extends Fragmentstatepageradapter {private Ar Raylist<fragment> fragments;public Fragsadapter (fragmentmanager FM) {super (FM); fragments = new ArrayList< Fragment> (); for (int i = 0; i < scrollingTabsAdapter.mTitles.length; i++) {Fragments.add (new myfragment (i));}} @Overridepublic int GetCount () {return fragments.size ();} @Overridepublic Fragment getItem (int position) {return fragments.get (position);}} /** * Sliding Label Adapter * * @author Zhaokaiqiang * */private class Scrollingtabsadapter implements Tabsadapter {private Activity M Context;public string[] Mtitles = {"Home","Recommended", "latest", "Entertainment", "Settings"};p ublic Scrollingtabsadapter (Activity ctx) {this.mcontext = CTX;} @Overridepublic View getView (int position) {Button tab = (button) mcontext.getlayoutinflater (). Inflate (r.layout.tab_ scrolling, null); Tab.settext (Mtitles[position]); return tab;}}}
in the code, we need to set up two adapters, one is Viewpager, to replace the display of the fragment, and the other is the Sliding tab layout, to control the layout of each tab display, returned in the GetView method.
Here r.layout.tab_scrolling is a custom layout, the code is as follows:
<?xml version= "1.0" encoding= "Utf-8"? ><button xmlns:android= "Http://schemas.android.com/apk/res/android" android:layout_width= "0DP" android:layout_height= "wrap_content" android:background= "@drawable/tab _holo " android:gravity=" center " android:paddingbottom=" 8DP " android:paddingleft=" 30dip " android:paddingright= "30dip" android:paddingtop= "8DP" android:textcolor= "@android: Color/holo_blue_ Light " android:textsize=" 16sp "/>
You can make changes according to your needs.
This sliding tab is suitable for many situations, so the choice of VIEWPAGR adapter is fragmentpagerstateadapter, if the sliding interface is below 3 or 3, it is recommended Fixedtabsview, using the same method as this, in addition, Viewpager adapter replaced fragmentpageradapter more appropriate.
demo GitHub address for this project: Https://github.com/ZhaoKaiQiang/ScrollingTabsDemo
"Android Interface Implementation" uses Scrollingtabsview to achieve viewpager effects with sliding tabs