wake-up-neo.net

So programmieren Sie einen Bildlauf per Bildlauf nach unten

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?

37
wikier

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"
56
metalwihen

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.

86
SBerg413

das wird in Ordnung sein

scrollView.post(new Runnable() {
    @Override

    public void run() {

        scroll.scrollTo(0, scroll.getBottom());

    }
});
17
sxk

Haben Sie scroll.fullScroll(View.FOCUS_DOWN) ausprobiert?

3
Macondo2Seattle

sie können dies auch anwenden

 mScrollviewHomepage.setScrollY(View.FOCUS_DOWN);
0
Aalishan Ansari