2013-03-09 15 views
8

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.

Odpowiedz

5

Rozwiązałem podobny problem, zmuszając go do przewijania w górę iw dół bezpośrednio po sobie.

scrollView.scrollBy(0, 1); 
scrollView.scrollBy(0, -1); 

Powoduje to, że widok przewijania pokazuje pionowy pasek przewijania, chyba że nie ma niczego do przewinięcia.

+0

Należy pamiętać, że jeśli widok przewijania był już na dole, teraz jest 1 piksel nad dnem z powodu przewijania -1 – xorgate

Powiązane problemy