2015-09-17 45 views
5

SwipeRefreshLayout非常灵敏,当我通过水平滑动屏幕时,只有一点垂直移动,“拉动刷新”指示器将显示。我怎样才能避免这种情况? SwipeRefreshLayout有一个函数我们可以设置SwipeRefreshLayout的触发指标的距离吗?

public void setDistanceToTriggerSync (int distance) 

能有像

public void setDistanceToTriggerIndicator (int distance) 

显示指示垂直距离的一定量的向下移动后,才,或者说你们周围有一些工作?

谢谢!

+2

[Horizo​​ntalScrollView内部SwipeRefreshLayout]的可能的复制(http://stackoverflow.com/questions/23989910/horizo​​ntalscrollview-inside-swiperefreshlayout) – Sufian

回答

2

嘿@Viky我在View刷机内部刷卡刷新布局时遇到了同样的问题,我发现这个解决方案是完美的希望它有所帮助。

下面的代码是从this SO answer采取:

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问题。只是想知道是否将这个问题标记为重复将对它的发现有什么影响? –

相关问题