In iOS è presente il metodo flashScrollIndicators
nella classe UIScrollView
che consente di far lampeggiare brevemente le barre di scorrimento come fanno quando viene visualizzata per la prima volta la vista.Le barre di scorrimento lampeggiano dal codice (come iOS flashScrollIndicators)
Non riesco a trovare nella documentazione l'equivalente Android a questo, per far lampeggiare brevemente le barre di scorrimento su viste scorrevoli (ScrollView, ListView, WebView, ecc.). Ho provato a emettere un requestLayout()
sulla vista, ma non ha funzionato.
Il motivo per cui sto chiedendo questo, è perché le mie viste sono contenute in un ViewPager
e quando l'utente scorre a una pagina diversa, quella pagina è già stata spesso disegnata e non lampeggia le barre di scorrimento.
rispondere alla mia domanda proprio qui
Il metodo si chiama awakenScrollBars
ed è definito nella classe View
. Sfortunatamente il metodo è protected
quindi dovrai creare sottoclassi di ScrollView, ListView o qualsiasi altra visualizzazione che desideri far lampeggiare con le barre di scorrimento.
In alternativa, i pubblici metodi scrollTo
e scrollBy
lampeggiano le barre di scorrimento, ma solo se la posizione di scorrimento è effettivamente cambiato. Quindi, per esempio listView.scrollBy(0,0)
non funziona e listView.scrollTo(0,0)
funziona solo se la vista non era già in alto.
Se sono in grado di creare una sottoclasse la vista, il seguente sembra funzionare, anche se certamente si tratta di una specie di hack:
view.setVisibility(View.INVISIBLE);
view.setVisibility(View.VISIBLE);
Impostazione della vista invisibile e poi subito al nuovo visibile non sembra causare qualsiasi ridisegna, ma ha l'effetto collaterale di far scattare la barra di scorrimento lampeggiante.
Ricorda che se lo scrollview era già in basso, ora è 1 pixel sopra il fondo a causa dello scorrimento -1 – xorgate