PagerSlidingTabStrip基本应用
最近在研究Android滑动导航页面,网上找到一款非常好的开源组件:PagerSlidingTabStrip。
官方网站:https://github.com/astuetz/PagerSlidingTabStrip。
1.下载并引用library文件。
2.新建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" > <com.astuetz.PagerSlidingTabStrip android:id="@+id/strip" android:layout_width="fill_parent" android:layout_height="48dp" android:layout_alignParentBottom="true" /> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_above="@+id/strip" /> </RelativeLayout>
3.新建activity:
package com.example.myfragment; import java.util.HashMap; import java.util.Map; import com.astuetz.PagerSlidingTabStrip; 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.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.util.TypedValue; public class MainActivity extends FragmentActivity { private PagerSlidingTabStrip strip; private ViewPager viewPager; private MyPagerAdapter adapter; private Map<Integer,Fragment> map = new HashMap<Integer, Fragment>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); strip = (PagerSlidingTabStrip) findViewById(R.id.strip); viewPager = (ViewPager) findViewById(R.id.pager); adapter = new MyPagerAdapter(getSupportFragmentManager()); viewPager.setAdapter(adapter); final int pageMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 3, getResources().getDisplayMetrics()); viewPager.setPageMargin(pageMargin); strip.setViewPager(viewPager); } public class MyPagerAdapter extends FragmentPagerAdapter{ private final String [] TITLES = {"one","two","three"}; public MyPagerAdapter(FragmentManager fm) { super(fm); // TODO Auto-generated constructor stub } @Override public Fragment getItem(int position) { // TODO Auto-generated method stub Fragment fragment = map.get(position); if(fragment!=null){ return fragment; } switch (position) { case 0: fragment = new Fragment001(); break; case 1: fragment = new Fragment002(); break; case 2: fragment = new Fragment003(); break; default: break; } map.put(position, fragment); return fragment; } @Override public CharSequence getPageTitle(int position) { // TODO Auto-generated method stub return TITLES[position]; } @Override public int getCount() { // TODO Auto-generated method stub return TITLES.length; } } }
4.新建Fragment:
package com.example.myfragment; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class Fragment001 extends Fragment { private View view; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub if(view==null){ view = inflater.inflate(R.layout.fragment_one, container,false); } ViewGroup group = (ViewGroup) view.getParent(); if(group!=null){ group.removeView(view); } return view; } }
fragment的个数根据要定义的导航页数决定。

浙公网安备 33010602011771号