Android ViewPager 实现无限循环滑动

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


已经用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); //<pre code_snippet_id="229272" snippet_file_name="blog_20140311_3_5135167" class="java" name="code">//mFragmentAdapter 是上面 <span style="font-family:Arial, Helvetica, sans-serif;">FragmentAdapter的一个实例化对象。</span>
 

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值