W systemie iOS jest dostępna metoda flashScrollIndicators
klasy UIScrollView
, która umożliwia szybkie wyświetlanie pasków przewijania jak podczas pierwszego wyświetlenia widoku.Tworzenie pasków przewijania flash z kodu (jak iOS flashScrollIndicators)
Nie mogę znaleźć w dokumentacji odpowiednika systemu Android, aby paski przewijania migały krótko na przewijanych widokach (ScrollView, ListView, WebView itp.). Próbowałem wydać requestLayout()
w widoku, ale to nie zadziałało.
Powodem, dla którego o to pytam jest to, że moje widoki są zawarte w ViewPager
, a kiedy użytkownik przesuwa się na inną stronę, ta strona jest już często rysowana i nie miga paska przewijania.
odpowiadając na moje własne pytanie tutaj
Metoda nazywa awakenScrollBars
i jest zdefiniowana w klasie View
. Niestety metoda jest protected
, więc będziesz musiał podklasować ScrollView, ListView lub jakikolwiek widok, który chcesz mieć przewijane paski przewijania.
Alternatywnie publiczne metody scrollTo
i scrollBy
migać również paski przewijania, ale tylko wtedy, gdy pozycja przewijania rzeczywiście zmieniło. Więc f.e. listView.scrollBy(0,0)
nie będzie działać i listView.scrollTo(0,0)
działa tylko wtedy, gdy widok nie był jeszcze na górze.
Jeśli nie są w stanie podklasy pogląd, następujące wydaje się działać, choć trzeba przyznać, że to rodzaj hack:
view.setVisibility(View.INVISIBLE);
view.setVisibility(View.VISIBLE);
Ustawianie widok na niewidoczny, a następnie natychmiast ponownie widoczne nie wydaje się powodować wszelkie odrysowania, ale ma efekt uboczny wyzwalania migania paska przewijania.
Należy pamiętać, że jeśli widok przewijania był już na dole, teraz jest 1 piksel nad dnem z powodu przewijania -1 – xorgate