`
irtutsk
  • 浏览: 17336 次
社区版块
存档分类
最新评论

ActionBar导航(滑动选项卡)

阅读更多

ActionBar导航(滑动选项卡)

在ActionBar Tabs中加入Viewpager可以实现滑动。

首先在布局文件中添加Viewpager容器,不加载XML资源fragment就不会显示。

<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/vPager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    tools:context="com.example.helloworld.Activity" >

</android.support.v4.view.ViewPager>

在Activity中实例化Viewpager,添加FragmentPagerAdapter适配器,实现OnPageChangeListener接口,将fragment添加到Viewpager容器中。设置setNavigationMode为NAVIGATION_MODE_TABS并把Viewpager加载到Tab导航里。

import android.support.v7.app.ActionBarActivity;
private ActionBar actionBar;
private ViewPager mPager;
private String[] dataTag;
private ArrayList<Fragment> mFragmentsList;
private Tab tabA, tabB;
@Override
protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_main);
	actionBar = getSupportActionBar();
	//向ArrayList中添加fragment
	mFragmentsList = new ArrayList<Fragment>();
	mFragmentsList.add(new MyFragmentA());
	mFragmentsList.add(new MyFragmentB());
	//获取ViewPager
	mPager = (ViewPager) findViewById(R.id.vPager);
	//设置FragmentPagerAdapter
	mPager.setAdapter(new MyFragmentPagerAdapter(
			getSupportFragmentManager(), mFragmentsList));
	//设置OnPageChangeListener
	mPager.setOnPageChangeListener(new MyOnPageChangeListener(this));
	//设置默认fragment
	mPager.setCurrentItem(0);
	//向dataTag添加标签
	dataTag = new String[] { "页 面 一", "页 面 二" };
	//NavigationTabs配置
	actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
	tabA = actionBar.newTab().setText(dataTag[0])
			.setIcon(R.drawable.ic_launcher).setContentDescription("Tab A")
			//设置TabListener
			.setTabListener(new MyTabListener(mPager));
	actionBar.addTab(tabA);
	tabB = actionBar.newTab().setText(dataTag[1])
			.setIcon(R.drawable.ic_launcher).setContentDescription("Tab B")
			//设置TabListener
			.setTabListener(new MyTabListener(mPager));
	actionBar.addTab(tabB);
}

 

 MyTabListener.java——切换Tab时滑动fragment。

public class MyTabListener implements ActionBar.TabListener {
	private ViewPager mViewPager;

	public MyTabListener(ViewPager viewpager) {
		this.mViewPager = viewpager;
	}

	@Override
	public void onTabSelected(Tab tab, FragmentTransaction ft) {
		if (mViewPager != null) {
			mViewPager.setCurrentItem(tab.getPosition());
		}
	}

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

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

MyFragmentPagerAdapter .java——将fragment添加到Viewpager中。

public class MyFragmentPagerAdapter extends FragmentPagerAdapter {
	private ArrayList<Fragment> fragmentsList;

	public MyFragmentPagerAdapter(FragmentManager fm,
			ArrayList<Fragment> fragments) {
		super(fm);
		this.fragmentsList = fragments;
	}

	@Override
	public Fragment getItem(int index) {
		// TODO Auto-generated method stub
		return fragmentsList.get(index);
	}

	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return fragmentsList.size();
	}
}

 MyOnPageChangeListener.java——滑动fragment时切换Tab。

public class MyOnPageChangeListener implements OnPageChangeListener {
	private ActionBar mActionBar;

	public MyOnPageChangeListener(ActionBarActivity activity) {
		// TODO Auto-generated constructor stub
		this.mActionBar = activity.getSupportActionBar();
	}

	@Override
	public void onPageScrollStateChanged(int arg0) {
		// TODO Auto-generated method stub

	}

	@Override
	public void onPageScrolled(int arg0, float arg1, int arg2) {
		// TODO Auto-generated method stub

	}

	@Override
	public void onPageSelected(int arg0) {
		// TODO Auto-generated method stub
		mActionBar.selectTab(mActionBar.getTabAt(arg0));
	}
}

 

Android2.3模拟器效果图

  • 大小: 96.6 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics