web-dev-qa-db-ja.com

ScrollViewをプログラムで下にスクロールする方法

解決できない問題があります。ScrollView内にはLinearLayoutしかありません。ユーザーの操作により、このLinearLayoutに2つのTextViewをプログラムで追加していますが、デフォルトではスクロールが上部に保持されます。私はユーザーのアクションを制御しているので、次のようなもので下にスクロールしやすいはずです。

_ScrollView scroll = (ScrollView) this.findViewById(R.id.scroll);
scroll.scrollTo(0, scroll.getBottom());
_

しかし、実際にはそうではありません。これは、この2つの新しい要素を追加した直後にgetBottom()が前の2つを返すためです。 refreshDrawableState()を呼び出して状態を更新しようとしましたが、動作しません。

いくつかの要素を追加した後、ScrollViewの実際の下部を取得するにはどうすればよいかご存知ですか?

42
wikier

これは実際にはあなたの質問に答えません。しかし、これはほとんど同じことを行う代替手段です。

画面の下部にスクロールする代わりに、画面の下部にあるビューにフォーカスを変更します。

つまり、置換:

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

で:

Footer.requestFocus();

ビュー、たとえば「フッター」がフォーカス可能であることを指定してください。

Android:focusable="true"
Android:focusableInTouchMode="true"
65
metalwihen

別のスレッドでスクロールする必要があります。そうしないと機能しません。これを試して:

scrollView.post(new Runnable() {
    @Override
    public void run() {
        scrollView.fullScroll(ScrollView.FOCUS_DOWN);
    }
});

これは私のために働いたものです。

100
SBerg413

これは大丈夫です

scrollView.post(new Runnable() {
    @Override

    public void run() {

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

    }
});
17
sxk

scroll.fullScroll(View.FOCUS_DOWN)を試しましたか?

3
Macondo2Seattle

これも適用できます

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