最近总结,“滑动导航”这个功能很常见。
结合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);
}
}
}