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模拟器效果图