6

Ho provato a utilizzare sia ScrollView che ListView.Posso mantenere la posizione di ScrollView dopo il ritorno al precedente Frammento come ListView?

Ho scoperto che se utilizzo ListView e faccio clic su uno degli elementi, lascia che il frammento corrente venga sostituito dal prossimo frammento e premere il pulsante indietro per visualizzare il frammento precedente. La posizione di scorrimento di ListView manterrà la stessa posizione. Ma se uso ScrollView, non lo farò.

Non capisco perché sono diversi? E come posso rendere ScrollView mantenere la sua posizione dopo aver premuto il tasto Indietro?

In realtà, ho cercato una risposta a StackOverflow. Ma voglio sapere le ragioni e trovare un modo più semplice per rendere ScrollView e ListView hanno lo stesso comportamento.

Per favore aiutatemi! Grazie!

risposta

21

I frammenti salvano e ripristinano automaticamente gli stati delle loro viste, a condizione che abbiano assegnato gli ID.

Quindi, se si assegna un ID al vostro ScrollView, il suo stato di scorrimento può essere ripristinato:

<ScrollView android:id="@+id/scrollview" 
    ...> 
+1

non si aspettava che sarebbe stato così facile: P – Alex

+2

È incredibile! Il documento ufficiale dice questo? – wangqi060934

+1

C'è molta disinformazione là fuori e questo lo risolve. Ad esempio, "devi gestire onSaveInstanceState/onRestoreInstanceState", che in realtà non risolve il problema, ma il fatto che tu abbia aggiunto un ID alla vista quando lo hai fatto, LO ha risolto. –

Problemi correlati