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的个数根据要定义的导航页数决定。

posted @ 2015-05-06 16:44  Shine_l  阅读(398)  评论(0)    收藏  举报