2012-08-29 22 views
5

Chcę wyłączyć gest rzucania przewijania i wygląda na to, że nie działa. Pomyślałem, że będzie to tak proste, jak stworzenie podstawowej klasy, która rozszerzy scrollview i @Overriding z onFling metoda. ale Zaćmienie daje mi błąd usunąć @Override:jak wyłączyć rzut przewijaniaView

jakieś pomysły jak wyłączyć Fling

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; 
    } 

} 

Odpowiedz

12

Rozwiązałem ten sam problem z metodą Override fling. Jeśli zastąpisz metodę rzucania na swojej klasie ScrollViewNoFling i nie wywołasz super.flinga tą metodą, będziesz miał przewijany scrollView.

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

myślę, że powinno być romans i nie onFling. Proszę odnieść się do oficjalnej documentation

+1

Należy również zauważyć, że 'onFling() 'jest częścią [GestureDetector.OnGestureListener] (http://developer.android.com/reference/android/view/GestureDetector.OnGestureListener.html). Jest to poprawna metoda, ale nie w tym przypadku. –

0

Oprócz korzystania fling() zamiast onFling(), trzeba zwrócić uwagę na wartości zwracanych.

Zgodnie z dokumentacją onFling():

Zwraca

true, jeśli zdarzenie jest spożywany, w przeciwnym wypadku false

Jeśli chcesz złapać zdarzenie i nic nie robić, return true. W przeciwnym razie zdarzenie zostanie przekazane do innej metody/klasy, aby spróbować sobie z nim poradzić.