最初に、次の方法でカスタム ViewPager クラスを作成します。
public class CustomViewPager extends ViewPager {
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) {
if(v instanceof ViewPager) {
return true;
}
return super.canScroll(v, checkV, dx, x, y);
}
}
メソッド canScroll の戻り値 (boolean) は、ViewPager のページを変更するための水平方向のジェスチャがフラグメントの右または左の境界線にある必要があるか (true)、フラグメント画面全体で機能するか (false) を示します。たとえば、最初のフラグメントに別の水平スクロール イベントがあるため、最初のフラグメントのみが右の境界線を使用して次のフラグメントに移動するようにしたい場合、これはメソッド canScroll をオーバーライドするコードになります。
@Override
protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) {
if(v instanceof ViewPager) {
int currentItem = ((ViewPager) v).getCurrentItem();
if((currentItem==0)){
return true;
}
return false;
}
return super.canScroll(v, checkV, dx, x, y);
}
最後のステップは、メイン クラスで CustomViewPager クラスを使用することです。
ViewPager myPager= (CustomViewPager)myContext.findViewById(R.id.myCustomViewPager);
およびxml:
<my.cool.package.name.CustomViewPager
android:id="@+id/myCustomViewPager"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1" />