2015-09-17 6 views
5

SwipeRefreshLayoutは非常に敏感なので、画面を少しスクロールして垂直方向に少し動かすと、 "pull to refresh"インジケータが表示されます。どうすればこれを避けることができますか? SwipeRefreshLayoutは機能SwipeRefreshLayoutのトリガインジケータまでの距離を設定できますか?

public void setDistanceToTriggerSync (int distance) 

を持っていることは、垂直距離の一定量を下方に移動され、またはあなたたちはいくつかの仕事を周りにいないだけ後にインジケータを表示するように

public void setDistanceToTriggerIndicator (int distance) 

のようなものを持っていることができますか?

ありがとうございます!

+2

可能な重複(http://stackoverflow.com/questions/23989910/horizo​​ntalscrollview-inside-swiperefreshlayout) – Sufian

答えて

2

こんにちは@Viky私はスワイプリフレッシュレイアウト内のViewページャで同じ問題に直面していました。私はこのソリューションが役立つことを望んでいました。

次のコードは、this SO answerから取得され:[SwipeRefreshLayout内部Horizo​​ntalScrollView]の

public class MySwipeRefreshLayout extends SwipeRefreshLayout { 

    private int mTouchSlop; 
    private float mPrevX; 
    // Indicate if we've already declined the move event 
    private boolean mDeclined; 

    public MySwipeRefreshLayout(Context context, AttributeSet attrs) { 
     super(context, attrs); 

     mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop(); 
    } 

    @Override 
    public boolean onInterceptTouchEvent(MotionEvent event) { 

     switch (event.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
       mPrevX = MotionEvent.obtain(event).getX(); 
       mDeclined = false; // New action 
       break; 

      case MotionEvent.ACTION_MOVE: 
       final float eventX = event.getX(); 
       float xDiff = Math.abs(eventX - mPrevX); 

       if (mDeclined || xDiff > mTouchSlop) { 
        mDeclined = true; // Memorize 
        return false; 
       } 
     } 

     return super.onInterceptTouchEvent(event); 
    } 

} 
+0

おかげとても!できます! –

+2

質問が同じであると分かる場合は、重複して記入してください。 – Sufian

+0

@Sufianこの質問は、古いSOの質問よりはるかに意味のあるタイトル(どのように/それが見つかったのか)を持っています。この質問を重複としてマークすると、それがどのように発見可能であるかとは関係がありませんか? –

関連する問題