ViewPager
注意事項(xiàng)
- 不知為何將
RecyclerView
和ViewPager
搞混 - 里面有滑動的控件的時候要注意,滑動沖突
- 標(biāo)簽頁最好使用
Fragment
,對應(yīng)的適配器Adapter
也就要繼承FragmentPagerAdapter
主要步驟
- 準(zhǔn)備幾個需要顯示的
Fragment
,代碼如下:
ManageFragment layManage = new ManageFragment();
SettingFragment laySetting = new SettingFragment();
SurveyFragment laySurvey = new SurveyFragment();
- 講
Fragment
加添到List<Fragment>
,代碼如下:
private List<Fragment> mFragmentList;//Tab頁面
mFragmentList = new ArrayList<>();
mFragmentList.add(layManage);
mFragmentList.add(laySetting);
mFragmentList.add(laySurvey);
- 自定義適配器
FragmentPagerAdapter
,代碼如下:
public class MainTabAdapter extends FragmentPagerAdapter{
private List<Fragment> mListFragment;
public MainTabAdapter (FragmentManager fragmentManager, List<Fragment> mListFragment){
super(fragmentManager);
this.mListFragment = mListFragment;
}
@Override
public Fragment getItem(int position) {
return mListFragment.get(position);
}
@Override
public int getCount() {
if (mListFragment != null )
return mListFragment.size();
return 0;
}
}//簡單框架并沒有添加什么操作
- 添加適配器,代碼如下:
private ViewPager mViewPager;
mViewPager.setAdapter(new MainTabAdapter(getSupportFragmentManager(),
mFragmentList));
5.配置滑動監(jiān)聽,代碼如下:
class TabPagerChangeLister implements ViewPager.OnPageChangeListener{
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
@Override
public void onPageSelected(int position) {
Animation animation= null;
switch (position){
case PAGE_MANAGE:
if (currentIndex == PAGE_SETTING){
}else if(currentIndex == PAGE_SURVEY ){
}
break;
case PAGE_SETTING:
if (currentIndex == PAGE_MANAGE){
}else if (currentIndex == PAGE_SURVEY){
}
break;
case PAGE_SURVEY:
if (currentIndex == PAGE_MANAGE){
}else if (currentIndex == PAGE_SETTING){
}
break;
default:
break;
}
}
}
6.(可選)需要標(biāo)簽切換的時候可以添加幾個TextView
,代碼如下:
private TextView manage;
private TextView setting;
private TextView survey;
manage = (TextView)findViewById(R.id.tv_tab_manage);
setting = (TextView)findViewById(R.id.tv_tab_setting);
survey = (TextView)findViewById(R.id.tv_tab_survey);
manage.setOnClickListener(this);
setting.setOnClickListener(this);
survey.setOnClickListener(this);
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.tv_tab_manage:
mViewPager.setCurrentItem(PAGE_MANAGE);
break;
case R.id.tv_tab_setting:
mViewPager.setCurrentItem(PAGE_SETTING);
break;
case R.id.tv_tab_survey:
mViewPager.setCurrentItem(PAGE_SURVEY);
break;
default:
break;
}
}
問題
因?yàn)闆]有深入體驗(yàn),相信在滑動監(jiān)聽,適配器中可以做很多事,慢慢發(fā)掘
特別鳴謝
靈魂導(dǎo)師- KingJA
![](http://upload.jianshu.io/users/upload_avatars/1411177/e87bdee4-c4e2-4f85-9aa4-ba599dde0da8.jpg?imageMogr2/auto-orient/strip%7CimageView2/1/w/240/h/240)