2015-05-06 13 views
9

mam zamienione na overScrollBy metodę w ScrollView w oparciu o następujące postu:overScrollBy nie zawsze wraca w Lollipop (5.x) platformy

http://jasonfry.co.uk/blog/android-overscroll-revisited/

To działa dobrze na innej wersji platformy, ale Lollipop nie może się odbić, jeśli ruch obrzucania zostanie zastosowany do ScrollView.

Ktoś napotkał ten problem i znalazł obejście problemu?

wywołana w konstruktorze setOverScrollMode(OVER_SCROLL_ALWAYS);

Oto odpowiedni kod, który mam przesłonięte w moim zwyczaju ScrollView klasy:

@Override 
protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, 
           int scrollY, int scrollRangeX, int scrollRangeY, 
           int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) { 
    return super.overScrollBy(deltaX, deltaY, scrollX, scrollY, 
      scrollRangeX, scrollRangeY, maxOverScrollX, OVER_SCROLL_AMOUNT, 
      isTouchEvent); 
} 

Dzięki.

+0

Czy możesz zamieścić swój aktualny kod? –

+0

Wygląda na to, że działasz zgodnie z przeznaczeniem, czy możesz dokładniej wyjaśnić, co dzieje się nie tak, a także napisać jakiś kod? – memoizr

+0

Zaktualizował odpowiedni kod, przewijasz normalnie przewinięcia, a następnie stosujesz ruch rzucania, a przewijanie po prostu się zatrzymuje. – Niko

Odpowiedz

4

Wkopałem się w zmiany między KitKat a Lollipop ScrollView. Poniższy kod rozwiązuje mój problem.

@TargetApi(21) 
@Override 
public boolean dispatchNestedFling(float velocityX, float velocityY, boolean consumed) { 
    // Not consumed means it wasn't handled because ScrollView 
    // doesn't take over scrolling bounds into scroll range, 
    // so we fling it ourselves to get it bounce back 
    if (getOverScrollMode() == OVER_SCROLL_ALWAYS && !consumed) { 
     fling((int) velocityY); 

     return true; 
    } else { 
     return super.dispatchNestedFling(velocityX, velocityY, consumed); 
    } 
} 
+0

Nie działa dla mnie na Lollipop 5.1. Więc przejąłem tę funkcję tylko tymi 2 liniami: 'fling ((int) velocity); return true; '. A teraz działa. –

Powiązane problemy