2012-08-29 68 views
5

我想禁用一個scrollview的投擲手勢,它似乎並沒有工作..我認爲這將是一樣簡單的創建一個基本的類,擴展滾動視圖和@OverridingonFling方法。但是Eclipse是給我一個錯誤刪除@覆蓋:如何禁用一個scrollView的投擲

任何想法如何禁用掃視

public class ScrollViewNoFling extends ScrollView { 

    /** 
    * @param context 
    * @param attrs 
    * @param defStyle 
    */ 
    public ScrollViewNoFling(Context context) { 

     super(context); 
     // TODO Auto-generated constructor stub 
    } 
    public ScrollViewNoFling(Context context, AttributeSet attrs) { 

     super(context, attrs); 
     // TODO Auto-generated constructor stub 
    } 
    public ScrollViewNoFling(Context context, AttributeSet attrs, int defStyle) { 

     super(context, attrs, defStyle); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) 
    { 
     return false; 
    } 

} 

回答

12

我解決了與Override fling方法相同的問題。如果你重寫ScrollViewNoFling類的方法,而不是在這個方法上調用super.fling,那麼你將不會處理scrollView。

@Override 
public void fling (int velocityY) 
{ 
    /*Scroll view is no longer gonna handle scroll velocity. 
    * super.fling(velocityY); 
    */ 
} 
0

我覺得應該是一扔,不onFling。 請參考官方documentation

+1

還要注意,'onFling()'是的一部分[GestureDetector.OnGestureListener](http://developer.android.com/reference/android/view/GestureDetector.OnGestureListener.html)。這是一種有效的方法,只是不在這種情況下。 –

0

除了使用fling()代替onFling(),你需要注意你的返回值。

按照該文檔onFling()

返回

true,如果該事件被消耗掉,否則爲假

如果你想趕上事件,什麼也不做,返回true。否則,事件將被傳遞給其他方法/類來嘗試處理它。