大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > Android技巧 > Android 原生 Android ActionBar Tab (滑动)导航

Android 原生 Android ActionBar Tab (滑动)导航(3)

关键词:滑动导航AndroidActionBarTab  阅读(4021) 赞(15)

[摘要]本文是对Android 原生 Android ActionBar Tab (滑动)导航的讲解,对学习Android编程技术有所帮助,与大家分享。

演示 ActionBar Tab 带滑动导航


3-1_副本

图 4 Tab 滑动导航

核心代码如下所示:

public class ActionBarTabSwipeNavTest extends FragmentActivity implements
        ActionBar.TabListener {
    
    ViewPager viewPager;
    ActionBar actionBar;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tabswipenav);
        // 获取ActionBar对象
        actionBar = getActionBar();
        // 获取ViewPager
        viewPager = (ViewPager) findViewById(R.id.pager);
        // 创建一个FragmentPagerAdapter对象,该对象负责为ViewPager提供多个Fragment
        FragmentPagerAdapter pagerAdapter = new FragmentPagerAdapter(
                getSupportFragmentManager()) {
            // 获取第position位置的Fragment
            @Override
            public Fragment getItem(int position) {
                Fragment fragment = new DummyFragment2();
                Bundle args = new Bundle();
                args.putInt(DummyFragment2.ARG_SECTION_NUMBER, position + 1);
                fragment.setArguments(args);
                return fragment;
            }
            // 该方法的返回值i表明该Adapter总共包括多少个Fragment
            @Override
            public int getCount() {
                return 3;
            }
            // 该方法的返回值决定每个Fragment的标题
            @Override
            public CharSequence getPageTitle(int position) {
                switch (position) {
                case 0:
                    return "第一页";
                case 1:
                    return "第二页";
                case 2:
                    return "第三页";
                }
                return null;
            }
        };
        // 设置ActionBar使用Tab导航方式
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        // 遍历pagerAdapter对象所包含的全部Fragment。
        // 每个Fragment对应创建一个Tab标签
        for (int i = 0; i < pagerAdapter.getCount(); i++) {
            actionBar
                    .addTab(actionBar.newTab()
                            .setText(pagerAdapter.getPageTitle(i))
                            .setTabListener(this));
        }
        // 为ViewPager组件设置FragmentPagerAdapter
        viewPager.setAdapter(pagerAdapter); // ①
        // 为ViewPager组件绑定事件监听器
        viewPager
                .setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
                    // 当ViewPager显示的Fragment发生改变时激发该方法
                    @Override
                    public void onPageSelected(int position) {
                        actionBar.setSelectedNavigationItem(position);
                    }
                });
    }
    @Override
    public void onTabUnselected(ActionBar.Tab tab,
            FragmentTransaction fragmentTransaction) {
    }
    // 当指定Tab被选中时激发该方法
    @Override
    public void onTabSelected(ActionBar.Tab tab,
            FragmentTransaction fragmentTransaction) {
        viewPager.setCurrentItem(tab.getPosition()); // ②
    }
    @Override
    public void onTabReselected(ActionBar.Tab tab,
            FragmentTransaction fragmentTransaction) {
    }
}
«上一页123下一页»


相关评论