Ich habe ein Problem, das ich nicht lösen kann: In einem ScrollView habe ich nur ein LinearLayout. Durch eine Benutzeraktion füge ich programmgesteuert 2 TextView Zu diesem LinearLayout hinzu, aber standardmäßig bleibt der Bildlauf oben .__ Da ich die Benutzeraktion kontrolliere, sollte ich leicht zum .__ scrollen. unten mit etwas wie:
ScrollView scroll = (ScrollView) this.findViewById(R.id.scroll);
scroll.scrollTo(0, scroll.getBottom());
Aber eigentlich nicht. Denn unmittelbar nach dem Hinzufügen dieser beiden neuen -Elemente gibt getBottom () die vorherigen beiden zurück. Ich habe versucht, den Zustand zu aktualisieren, indem er refreshDrawableState()
aufruft, aber ich arbeite nicht.
Haben Sie eine Idee, wie ich nach dem Hinzufügen einiger Elemente das eigentliche Ende einer ScrollView Erhalten kann?
Das beantwortet deine Frage nicht wirklich ... Aber es ist eine Alternative, die ziemlich dasselbe tut.
Ändern Sie den Fokus nicht auf den unteren Bildschirmrand, sondern auf eine Ansicht, die sich am unteren Bildschirmrand befindet.
Ersetzen Sie also:
scroll.scrollTo(0, scroll.getBottom());
mit:
Footer.requestFocus();
Vergewissern Sie sich, dass die Ansicht festgelegt ist, sagen Sie 'Fußzeile'.
Android:focusable="true"
Android:focusableInTouchMode="true"
Sie müssen das Scrollen in einem separaten Thread durchführen, sonst funktioniert es nicht. Versuche dies:
scrollView.post(new Runnable() {
@Override
public void run() {
scrollView.fullScroll(ScrollView.FOCUS_DOWN);
}
});
Das hat bei mir funktioniert.
das wird in Ordnung sein
scrollView.post(new Runnable() {
@Override
public void run() {
scroll.scrollTo(0, scroll.getBottom());
}
});
Haben Sie scroll.fullScroll(View.FOCUS_DOWN)
ausprobiert?
sie können dies auch anwenden
mScrollviewHomepage.setScrollY(View.FOCUS_DOWN);