ScrollView scrollTo funktioniert nicht
Gleiche Problem wie ScrollView .scrollTo funktioniert nicht? Speichern ScrollView position auf rotation
Ich dynamisch Elemente hinzufügen scrollView in onCreate. Ich versuche im folgenden, nachdem alle Artikel Hinzugefügt wurden:
//no effect
ScrollView mainScroll = (ScrollView) findViewById(R.id.average_scroll_mainScroll);
//no effect
ScrollView mainScroll = (ScrollView) findViewById(R.id.average_scroll_mainScroll);
mainScroll.post(new Runnable() {
public void run(){
ScrollView mainScroll = (ScrollView) findViewById(R.id.average_scroll_mainScroll);
mainScroll.scrollTo(0, 0);
}
});
//works like a charm
ScrollView mainScroll = (ScrollView) findViewById(R.id.average_scroll_mainScroll);
mainScroll.postDelayed(new Runnable() {
public void run(){
ScrollView mainScroll = (ScrollView) findViewById(R.id.average_scroll_mainScroll);
mainScroll.scrollTo(0, 0);
}
}, 30);
Schließe ich, dass es eine Veranstaltung wie "DOM-bereit"? Gibt es irgendwelche Rückrufe?
- Meine beste Vermutung ist, dass da die
ScrollView
noch nicht gelegt aus oder gemessen, noch direkt nach dem aufblasen es, der erste Ansatz nicht funktioniert. Durch das Hinzufügen einer Verzögerung, du gibst der view-Hierarchie genug Zeit, Sie zu initialisieren. Ich würde versuchen, das anbringen einerOnGlobalLayoutListener
zu denScrollView
'sViewTreeObserver
benachrichtigt zu werden, wenn die Aussicht ist bereit zu scrollen'.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Brauchen Sie nicht zu erweitern, die ScrollView und das erstellen Ihrer eigenen, wie pro die Antwort David Daudelin für die diese Frage.
Holen Sie sich die
ViewTreeObserver
desScrollView
und fügen Sie eineOnGlobalLayoutListener
zu denViewTreeObserver
. Dann rufen Sie dieScrollView.scrollTo(x,y)
Methode aus deronGlobalLayout()
Methode derOnGlobalLayoutListener
. Code:Dies funktioniert für mich, ersetzen Sie
scrollView.scrollTo()
zuMir wurde geholfen durch Vasily Kabunov 's Antwort in
ScrollView .scrollTo funktioniert nicht? Speichern ScrollView position auf rotation
Wenn Sie einige änderungen an einer ScrollView, dauert es eine Weile, es zu replizieren das layout-änderungen der display-Liste und Benachrichtigen Sie den ScrollView, dass es in der Tat erlaubt, Blättern Sie zu einer position.
Habe ich es geschafft, es funktioniert durch die Erweiterung
ScrollView
mit einem ScrollView von meinem eigenen, und das hinzufügen einer Methode fügt hinzu, dass dieOnGlobalLayoutListener
(wie vorgeschlagen von MH), wie erforderlich, und blättert es später. Es ist ein bisschen mehr als automatisierte Anwendung auf jeden Fall, dass Sie es brauchen (aber dann müssen Sie verwenden die neueScrollView
). Wie auch immer, dies ist der relevante code:Sehr nützlich für mich, da ich wollte, um zu Blättern, um eine bestimmte Ansicht innerhalb einer ScrollView Recht, nachdem Sie ihn Hinzugefügt haben.