2014-04-28 53 views
4

我希望當用戶爲刷新SwipeRefreshLayout檢測向下滑動事件onRefresh()之前開始

拉下(動作條下刷新線開始擴大其UI寬度)來檢測。

我想消息來替換動作條(「向下滑動即可刷新」),但是,

我不知道我應該使用哪一個事件來調用我的函數。

+0

你可以訪問此鏈接 [SwipeRefreshLayout的實施] [1] [1]:http://stackoverflow.com/questions/22856754/how-to-adjust-the-swipe-down-distance-in-swiperefreshlayout?rq=1 –

回答

2

可以擴展SwipeRefreshLayout,覆蓋的onTouchEvent,使你在ACTION_DOWN事件的變化,即:

public class MySwipeRefreshLayout extends SwipeRefreshLayout { 

    private Runnable onActionDown, onActionUp; 

    public MySwipeRefreshLayout(Context context, AttributeSet attributeSet) { 
     super(context,attributeSet); 
    } 

    public void setOnActionDown(Runnable onActionDown) { 
     this.onActionDown = onActionDown; 
    } 

    public void setOnActionUp(Runnable onActionUp) { 
     this.onActionUp = onActionUp; 
    } 

    @Override 
    public boolean onTouchEvent (MotionEvent ev) { 
     if (ev.getAction() == ev.ACTION_DOWN) { 
      if (onActionDown != null) { 
       onActionDown.run(); 
      } 
     } else if (ev.getAction() == ev.ACTION_UP) { 
      if (onActionUp != null) { 
       onActionUp.run(); 
      } 
     } 
     return super.onTouchEvent(ev); 
    } 
: 
: 
} 

確保您使用擴展的類的佈局。然後,在你看來,你可以傳遞一個Runnable到setOnActionDown更新動作條或任何其他你想....

+0

這不是'下來'意味着按下,而不是向下移動?! –

相關問題