Android ViewPager 实现无限循环滑动

先高亮一个问题向大家请教,谢谢大家!就是用PagerTabStripe实现时,title总是在文字的中间,怎么能让标题在view的左上角呢?谢谢大家!图是在随便找的,就是怎么让这个“Nearby”显示在最左边呢?

Android ViewPager 实现无限循环滑动_第1张图片

已经用ViewPager 和PagerTabStrip 实现了页面滑动和tab滑动,要求实现无限循环滑动,纠结了很久,想到了一个不算办法的办法,即把adapter 中getcount 函数返回值设很大,具体如下:


mport java.util.Locale;

import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.PagerTitleStrip;

/* viewpager 实现无限滑动
 * @author:Jessica
 */

public class FragmentAdapter extends FragmentPagerAdapter{

	private Context mContext;
	

		public FragmentAdapter(Context context, FragmentManager fm) {
			super(fm);
			mContext = context;
			
		}                                                                                                                                  @Override
		public Fragment getItem(int position) {
			Fragment fragment;
			int newposition;
			if(position>=0) newposition=(position+400)%4;
			else newposition = (-position)%4;
			//0,1,2,3时显示的每一个页面
			switch ( newposition) {
			case 0:fragment = new ColFragment();
				return fragment;
				
			case 1:fragment = new FriFregment();
				return fragment;
			
			case 2:fragment = new HotFregment();
				return fragment;
			
			case 3:fragment = new CatFragment();
				return fragment;
				default : return null;
			}
			//return fragment;
		}
		@Override
		public int getCount() {
			//return 4;
                        //返回一个很大的值,可以设定viewpager显示范围很大就可以无限循环,当然也不用这么大。。。
			return Integer.MAX_VALUE;
		}

		@Override
		public CharSequence getPageTitle(int position) {
                        //因为一共有4个页面待显示,所以position对4取余
			int newposition;
			if(position>=0) newposition=(position+400)%4;
			else newposition = (-position)%4;
			
			switch ( newposition) {
			case 0:
				return mContext.getString(R.string.about_col);
				
			case 1:
				return mContext.getString(R.string.about_friend);
			
			case 2:
				return mContext.getString(R.string.about_hot);
			
			case 3:
				return mContext.getString(R.string.about_cat);
				default : return null;
			

			}
		}	
}

但是这时第一张图是不能向左划的,所以在MainActivity中onCreat 中要加一句,设定当前position 不是零,是需要显示的view的倍数就可以,大小够用就行,这样初始也是第一个页面。

mfViewPager.setCurrentItem(400);
当然也可以设成如下,也可以实现第一张图也能左画,只是这时第一张图不一定是我们想要显示的第一张图。

mfViewPager.setCurrentItem(mFragmentAdapter.getCount()/2); //
//mFragmentAdapter 是上面 FragmentAdapter的一个实例化对象。
 
  
 
 

你可能感兴趣的:(Android,开发)