Android ViewPager 實現無限迴圈滑動
阿新 • • 發佈:2019-02-04
先高亮一個問題向大家請教,謝謝大家!就是用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>