2013-03-09 18 views
8

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.

risposta

5

Ho risolto un problema simile forzandolo a scorrere su e giù direttamente l'uno dopo l'altro.

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

Questo fa sì che la vista di scorrimento mostri la barra di scorrimento verticale, a meno che non vi sia nulla da scorrere.

+0

Ricorda che se lo scrollview era già in basso, ora è 1 pixel sopra il fondo a causa dello scorrimento -1 – xorgate

Problemi correlati