私はビューページャーを持っていて、片方に縦と横のrecyclerviewを含む2つの別々の断片があります。子リサイクラビューが最後の項目にスクロールしたときにViewPagerページングを無効にする
水平リサイクラビューを最後のアイテムにスクロールし、さらにスワイプしようとすると、ビューページは次のページにスクロールします。私はこれが起こることを望んでいない。私は水平リサイクルビューをオーバースケールしようとすると、ビューページのページングを無効にしたいと思います。
ただし、他の場所でスワイプすると、ビューページのページングを無効にしたくないです。たとえば、私が垂直のrecyclerviewまたは親フラグメント内の空きスペースをスワイプすると、ビューページャがページを変更する原因になります。
私はin this SO questionを読んで、ビューページャのページングを無効にする方法。また、 this SO questionは、子ビューポートがある点で似ていますが、私は水平なrecyclerviewでそれを複製しようとしていません。
ここではいくつかの構造です:私はページングを無効にすることができます
カスタムviewpager(SO上記のリンク最初からそれを取った):
public class CustomViewPager extends ViewPager {
private boolean enabled;
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
this.enabled = true;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (this.enabled) {
return super.onTouchEvent(event);
}
return false;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
if (this.enabled) {
return super.onInterceptTouchEvent(event);
}
return false;
}
public void setPagingEnabled(boolean enabled) {
this.enabled = enabled;
} }
私はontouchlistenerを設定し、水平recyclerview(第2に似ては、 SO)上記のリンク:
horizontalRecyclerView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()){
case MotionEvent.ACTION_MOVE:
customViewPager.setPagingEnabled(false);
break;
case MotionEvent.ACTION_UP:
customViewPager.setPagingEnabled(true);
break;
}
return false;
}
});
エクストラ所見:私は時々私の場合、長押しことに気づいたが私がスワイプする前に、horizontal recyclerviewはビューページャの次のページには行きません。しかし、すばやくスワイプすると、ビューページは次のページに移動します。
誰でもこれを行う適切な方法を知っていますか?
何か助けていただければ幸いです。
すべての解決策が見つかりました。私は同じものを探しています –