最近总结,“滑动导航”这个功能很常见。


结合ActionBar和ViewPage的使用,简单记录如下;


思路:  定义一个字符串,来表示TAB的标签,并做监听其改变,同时“绑定”相应的Fragment。布局滑动,我使用的是ViewPage,绑定监听后,滑动改变ActionBar的高亮显示



两个Fragment类就省了,没什么东西。主Activity的布局里面只有一个ViewPage控件。


public class MainActivity extends
 
private ActionBar actionBar;
private ViewPager vp;
private ArrayList<Fragment> fragmentList;

private String[] addresses = { "first", "second"
private Tab[] mTab = new Tab[addresses.length];

@Override
public  void
//  TODO
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
vp = (ViewPager) findViewById(R.id.viewPager);
vp.setOnPageChangeListener(new

fragmentList = new ArrayList<Fragment>(); /* 装载Fragment */
fragmentList.add(new
fragmentList.add(new

/*  创建Fragment适配器 */
MyFragmentAdapter mfa =  new MyFragmentAdapter(getSupportFragmentManager(),  fragmentList);
 
vp.setAdapter(mfa);

actionBar
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowHomeEnabled(false);

/* 初始化TAB */
for(int i = 0;i < addresses.length;i++){
mTab[i] = actionBar.newTab().setText(addresses[i]).setTabListener(new
actionBar.addTab(mTab[i]);
}
}


private  class MyTabListener implements
/**  TAB在切换的时候 ,并带动下面的Fragment  **/
@Override
public  void
//  TODO

if(tab == mTab[0]){
vp.setCurrentItem(0);
}
else  if(tab == mTab[1]){
vp.setCurrentItem(1);
}

}
 
@Override
public  void
//  TODO

}
 
@Override
public  void
//  TODO Auto-generated method stub 
}
}

private class MyOnPageChangeListener  implements
/** Fragment 在滑动的时候,带动TAb标签 **/
@Override
public  void onPageScrollStateChanged(int
//  TODO
}
 
@Override
public  void onPageScrolled(int arg0,  float arg1, int
//  TODO
}
 
@Override
public  void onPageSelected(int
actionBar.setSelectedNavigationItem(arg0); 
}
}
 }