Ho ViewPager
che sto usando per la visualizzazione di alcuni frammenti, ho anche TextView
sul mio FragmentActivity
. Devo cambiare il testo in TextView
a seconda del frammento attualmente selezionato in ViewPager
. Il problema che ho dovuto affrontare: ViewPager
ha un meccanismo di memorizzazione nella cache, crea un'istanza dei frammenti prima che siano realmente visibili per l'utente, ad esempio quando seleziono la seconda pagina nel frammento ViewPager
sulla terza pagina anch'essa creata. Inoltre, non riesco a determinare all'interno del frammento questo frammento è visibile o è appena stato creato da ViewPager
, ma non è realmente visibile all'utente. Ho provato ad utilizzare OnPageChangeListener
per questo, ma le modifiche apportate in essa era inaccettabile lento per me (pagina scorrere e poi il mio TextView
sono cambiati)
Quello che realmente bisogno: ho bisogno per determinare quale frammento è attualmente visibile in ViewPager
, indipendentemente dallo FragmentActivity
o dallo stesso Fragment
. Come posso raggiungere questo obiettivo?Determinare quale frammento è attualmente visibile in ViewPager
risposta
ViewPager.OnPageChangeListener
è l'approccio ovvio qui. E come hai notato, onPageSelected(int position)
non viene chiamato fino a quando la pagina non viene centrata (se stai scorrendo lentamente la pagina toccando e tenendo premuto).
Quello che realmente bisogno: ho bisogno di determinare quale frammento è attualmente visibile in ViewPager, non importa da FragmentActivity o dal frammento stesso. Come posso raggiungere questo obiettivo?
Innanzitutto, non è stato definito "attualmente visibile". In uno ViewPager
, si possono vedere 2 pagine mentre si scorre tra di esse, quindi quale è "al momento visibile" a metà passaggio? La mia ipotesi è che tu considereresti la pagina "più visibile" come "attualmente visibile".
Detto questo, vorrei esaminare utilizzando onPageScrolled (int position, float positionOffset, int positionOffsetPixels)
. Sembra che positionOffset
possa essere in grado di darti le informazioni che ti servono. Lo testerei con alcune dichiarazioni di registrazione per vedere quali dati restituiscono.
- 1. Frammento precedente visibile sotto il nuovo frammento
- 2. Come verificare se una vista frammento è visibile all'utente?
- 3. ViewPager all'interno problema frammento
- 4. In quale Paese è attualmente l'utente?
- 5. Android: Verifica se un frammento è visibile
- 6. Come posso determinare se un geopoint è visualizzato nell'area attualmente visibile?
- 7. Usa Vista o Frammento in ViewPager
- 8. Ricevi informazioni di corrente frammento visibile (s) in dumpsys Android
- 9. Controlla se la mia QMainWindow è attualmente visibile in Qt
- 10. ViewPager + Frammenti - Frammento non mostrato
- 11. come caricare il frammento in ViewPager solo quando è selezionato
- 12. Frammento già aggiunto IllegalStateException in viewpager
- 13. Sostituisci frammento corrente in ViewPager su Android
- 14. Filtro ListView che fa parte di un frammento di ViewPager
- 15. Frammento ricreato quando si cambia scheda con ViewPager
- 16. Visualizzazione del frammento di precarico in ViewPager al primo avvio
- 17. frammento errata ViewPager riceve onContextItemSelected chiamare
- 18. jquery n-esimo figlio che è attualmente visibile
- 19. Come posso sapere se un controllo Delphi è attualmente visibile?
- 20. Sostituire frammento con un altro frammento all'interno ViewPager
- 21. Determinare se un indicatore è visibile in Google Maps
- 22. Come ottenere quale frammento è stato selezionato
- 23. Sostituire ViewPager con frammento - Quindi spostarsi indietro
- 24. Sostituzione di un frammento/scheda in un Viewpager
- 25. come vedere quale codice javascript è attualmente in esecuzione?
- 26. Come verificare quale tipo è attualmente utilizzato in unione?
- 27. CoordinatorLayout non funziona con NestedScrollView all'interno Frammento in ViewPager
- 28. Frammento senza scorrimento in un ViewPager all'interno di CoordinatorLayout
- 29. Sostituisci frammento con ViewPager nella scheda ActionBar
- 30. Come determinare frammento restaurato backstack