次の例を使用して、viewPager を実装しています: http://code.google.com/p/viewpagerexample/issues/list
この例の問題は、開始位置を設定する方法がわからないことです。デフォルトの開始位置は 0 です。基本的に、使用可能なビューが左または右にあるかどうかを制御したくありません。
センターのビューの現在位置を制御する方法はありますか? それを行うより良い方法はありますか?円形にすることは可能ですか?
次の例を使用して、viewPager を実装しています: http://code.google.com/p/viewpagerexample/issues/list
この例の問題は、開始位置を設定する方法がわからないことです。デフォルトの開始位置は 0 です。基本的に、使用可能なビューが左または右にあるかどうかを制御したくありません。
センターのビューの現在位置を制御する方法はありますか? それを行うより良い方法はありますか?円形にすることは可能ですか?
私はそれの位置を設定する方法を見つけました、それはクラスの外で行われます:
awesomePager = (ViewPager) findViewById(R.id.awesomepager);
awesomePager.setAdapter(awesomeAdapter);
awesomePager.setCurrentItem(CurrentPosition);
それに合わせたいアイテムの量を計算することで制限できます
最後のフラグメントから始めるには、次のようにしました。
PagerAdapter pagerAdapter = new PagerAdapter();
viewPager.setAdapter(pagerAdapter);
viewPager.setCurrentItem(pagerAdapter.getCount() - 1);
アダプターを設定する前に現在のアイテムを設定すると、最初に返されるアイテムが常に位置 0 になるという問題に遭遇しました。
次のことを確認してください。
awesomePager.setAdapter(awesomeAdapter);
awesomePager.setCurrentItem(CurrentPosition);
ではない:
awesomePager.setCurrentItem(CurrentPosition);
awesomePager.setAdapter(awesomeAdapter);
サイズが1000を超える配列があり、動的ビューページャーでは、最初のロードで左スワイプがスタックしていました。以下のコードはこれを解決し、スムーズなスクロールを実現しました:
@Override
onResume(){
super.onResume();
viewPager.setCurrentItem(newPosition);
}
私は同じ問題に遭遇しました。ViewPager を初期化すると、インジケーターの位置が 0 でした。これは、Pager コンテンツの計算量に依存する場合があります。以下のように ViewTreeObserver を使用します。
mGlobalLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
mViewPager.setCurrentItem(newPosition);
removeOnGlobalLayoutListener(mSlidingTabLayout.getViewTreeObserver(), mGlobalLayoutListener);
}
};
mSlidingLayout.getViewTreeObserver().addOnGlobalLayoutListener(mGlobalLayoutListener);
と、
private void removeOnGlobalLayoutListener(ViewTreeObserver observer, ViewTreeObserver.OnGlobalLayoutListener listener) {
if (observer == null) return;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
observer.removeGlobalOnLayoutListener(listener);
} else {
observer.removeOnGlobalLayoutListener(listener);
}
}
このように、ディレイの時間設定も煩わしくありません。