解決できない問題があります。ScrollView内にはLinearLayoutしかありません。ユーザーの操作により、このLinearLayoutに2つのTextViewをプログラムで追加していますが、デフォルトではスクロールが上部に保持されます。私はユーザーのアクションを制御しているので、次のようなもので下にスクロールしやすいはずです。
_ScrollView scroll = (ScrollView) this.findViewById(R.id.scroll);
scroll.scrollTo(0, scroll.getBottom());
_
しかし、実際にはそうではありません。これは、この2つの新しい要素を追加した直後にgetBottom()が前の2つを返すためです。 refreshDrawableState()
を呼び出して状態を更新しようとしましたが、動作しません。
いくつかの要素を追加した後、ScrollViewの実際の下部を取得するにはどうすればよいかご存知ですか?
これは実際にはあなたの質問に答えません。しかし、これはほとんど同じことを行う代替手段です。
画面の下部にスクロールする代わりに、画面の下部にあるビューにフォーカスを変更します。
つまり、置換:
scroll.scrollTo(0, scroll.getBottom());
で:
Footer.requestFocus();
ビュー、たとえば「フッター」がフォーカス可能であることを指定してください。
Android:focusable="true"
Android:focusableInTouchMode="true"
別のスレッドでスクロールする必要があります。そうしないと機能しません。これを試して:
scrollView.post(new Runnable() {
@Override
public void run() {
scrollView.fullScroll(ScrollView.FOCUS_DOWN);
}
});
これは私のために働いたものです。
これは大丈夫です
scrollView.post(new Runnable() {
@Override
public void run() {
scroll.scrollTo(0, scroll.getBottom());
}
});
scroll.fullScroll(View.FOCUS_DOWN)
を試しましたか?
これも適用できます
mScrollviewHomepage.setScrollY(View.FOCUS_DOWN);