12

ユーザーがスクロールビューを使用して画面に入力したテキストを表示するチャットのようなアプリケーションを構築しています。私がやっていることは、画面にテキストが追加されるにつれてスクロールビューを自動スクロールすることです。私は使用しています

 ScrollView my_scrollview = (ScrollView) findViewById(R.id.scroller);
 my_scrollview.fullScroll(ScrollView.FOCUS_DOWN);

これは機能しているように見えますが、何らかの理由で、チャット中にキーボードが通常画面上にあるため、スクロールビューが完全にスクロールダウンしないため、追加された最新のテキストビューが表示されません (手動で最新のテキストビューまでスクロールする必要があります)。 1)。これを修正するにはどうすればよいですか?

4

4 に答える 4

40

周りを見回したところ、他の人が同じ問題に遭遇したことがわかりました。

このコードを使用してこの問題を解決しました:

final ScrollView scrollView = (ScrollView) findViewById(R.id.scroll_view);
scrollView.post(new Runnable() {
    public void run() {
        scrollView.fullScroll(View.FOCUS_DOWN);
    }
});

うまくいけば、これは誰かを助けることができます!

于 2013-02-15T15:20:22.983 に答える
15

遅いですが、この問題で誰かを助けるかもしれません.最後の要素を追加してscrollView用に更新するのに約200分かかるので、これは確実に機能します。

void scrollDown()
{
    Thread scrollThread = new Thread(){
        public void run(){
            try {
                sleep(200);
                ChatActivity.this.runOnUiThread(new Runnable() {
                    public void run() {
                        myScrollView.fullScroll(View.FOCUS_DOWN);
                    }    
                });
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    };
    scrollThread.start();
}

scrollDown();scrollView に要素を追加した後に呼び出すだけです。

于 2013-08-03T20:36:38.103 に答える