2016-11-07 10 views
0

カードをタップすると新しいアクティビティが開きますが(画像を参照)、横にスワイプすると(誤ってまたは故意に)同じことが起こり、無効にする必要があります。どうやってするか?viewPagerの水平スワイプでアクションを無効にするにはどうすればよいですか?

私はネストされたviewPagerを使用しています。最初のものはviewPager(この水平スクロールでは無効)です。最初のフラグメント(Digest)では、私は垂直viewPagerを使用していますが、正常に動作しています。問題は、水平方向にスクロールしようとすると次のActivityが開きます(カードをクリックすると開きます)。私はカードの上を水平にスクロールすると何も起こらないようにしたい。

enter image description here

答えて

0

ので、病気にあなたの質問に明確にされていないYou'reは、あなたが完全にviewpagerスワイプをブロックしたいと仮定します。

このようにビューページウィジェットを拡張する必要があります。

public class NonSwipeableViewPager extends ViewPager { 

    private boolean isPagingEnabled = true; 

    public NonSwipeableViewPager(Context context) { 
     super(context); 
    } 

    public NonSwipeableViewPager(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     return this.isPagingEnabled && super.onTouchEvent(event); 
    } 

    @Override 
    public boolean onInterceptTouchEvent(MotionEvent event) { 
    return this.isPagingEnabled && super.onInterceptTouchEvent(event); 
    } 

    public void setPagingEnabled(boolean b) { 
     this.isPagingEnabled = b; 
    } 

}

は、その後、あなたの横viewpagerとプログラム的setPagingEnabled(偽)のために、この新しいバージョンを使用します。タブを使用してビューページとやりとりできることに注意してください。スワイプイベントのみがブロックされます。

+0

彼の質問は、新しいアクティビティがカードの横スワイプと斜めスワイプで開きますが、彼はカード上でタップして開くだけです...言い換えれば、彼のページには縦スクロールがありますが、通常は対角線上でスクロールせずにカードページ(新しいアクティビティ)を開きます。 –

+0

このようなものですが、彼はビューページャーで縦スクロールしています... http://queforum.com/android-applications/167786-android-how-make-viewpager-swipe-diagonal-swipes.html –

関連する問題