Android3.0以前的Fragment支持实现Tab导航

第一步:使用ViewPager存放不同的页面,并使用PagerTitleStrip作为导航的状态条,布局文件如下:



    

第二步:编写实现支持3.0以前的ActionBar的Tab导航的Activity代码,使用ViewPager和FragmentPagerAdapter的配合使用来装载Fragment页面,具体实现的FragmentActivity如下:

public class Tab3Activity extends FragmentActivity implements ActionBar.TabListener{
    ViewPager viewPager;
    ActionBar actionBar;
    private static final int TAB_COUNT = 3;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.android3_tab);
        actionBar = getActionBar();
        viewPager = (ViewPager) findViewById(R.id.pager);
        //  自定义FragmentPagerAdapter适配器
        FragmentPagerAdapter pagerAdapter = new FragmentPagerAdapter(getSupportFragmentManager()){
            @Override
            public Fragment getItem(int position) {
                Fragment fragment = new DummyFragment();
                Bundle args = new Bundle();
                args.putInt(DummyFragment.ARG_SECTION_NUMBER, position + 1);
                fragment.setArguments(args);
                return fragment;
            }
            //  表面该Adapter共包含多少个Fragment
            @Override
            public int getCount() {
                return TAB_COUNT;
            }
            //  该方法决定每个Fragment的标题
            @Override
            public CharSequence getPageTitle(int position) {
                switch (position) {
                    case 0:
                        return "第一页";
                    case 1:
                        return "第二页";
                    case 2:
                        return "第三页";
                }
                return null;
            }
        };
        //  为ActionBar设置导航模式
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        //  ActionBar添加Tab标签
        for(int i = 0; i < pagerAdapter.getCount(); i++){
            actionBar.addTab(actionBar.newTab().setText(pagerAdapter.getPageTitle(i))
                    .setTabListener(this));
        }
        //  为viewPager设置适配器
        viewPager.setAdapter(pagerAdapter);
        viewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener(){
            @Override
            public void onPageSelected(int position) {
                super.onPageSelected(position);
                actionBar.setSelectedNavigationItem(position);
            }
        });
    }

    @Override
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
        viewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {

    }

    @Override
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {

    }
}

DummyFragment的代码如下:

public class DummyFragment extends android.support.v4.app.Fragment {
    public final static String ARG_SECTION_NUMBER = "section_number";
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        TextView textView = new TextView(getActivity());
        textView.setGravity(Gravity.START);
        Bundle args = getArguments();
        textView.setText(args.getInt(ARG_SECTION_NUMBER)+"");
        textView.setTextSize(28);
        return textView;
    }
}


运行效果如下:

注:需要在项目(module)libs目录下导入android-support-v4.jar文件

你可能感兴趣的:(android)