web-dev-qa-db-ja.com

アクティビティの起動時にScrollViewの一番下までスクロールする方法

ScrollViewにいくつかのデータを表示しています。アクティビティの起動時に(メソッドonCreate)ScrollViewにデータを入力し、一番下までスクロールしたい。

getScrollView().fullScroll(ScrollView.FOCUS_DOWN)を使用しようとしました。これは、ボタンをクリックしたときのアクションとして作成したときに機能しますが、onCreateメソッドでは機能しません。

アクティビティの起動時にScrollViewを一番下までスクロールする方法はありますか?つまり、最初に表示されるとき、ビューはすでに下にスクロールされています。

94
Palo

次のように実行する必要があります。

    getScrollView().post(new Runnable() {

        @Override
        public void run() {
            getScrollView().fullScroll(ScrollView.FOCUS_DOWN);
        }
    });

この方法では、ビューが最初に更新され、次に「新しい」下部までスクロールします。

210
Palo

データが追加された後に次のコードを追加します。

final ScrollView scrollview = ((ScrollView) findViewById(R.id.scrollview));
scrollview.post(new Runnable() {
    @Override
    public void run() {
        scrollview.fullScroll(ScrollView.FOCUS_DOWN);
    }
});
46
Harshid

これは私のために働く:

scrollview.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        scrollview.post(new Runnable() {
            public void run() {
                scrollview.fullScroll(View.FOCUS_DOWN);
            }
        });
    }
});
28
sonida

レイアウトファイルでこれを行うことができます。

                Android:id="@+id/listViewContent"
                Android:layout_width="wrap_content"
                Android:layout_height="381dp" 
                Android:stackFromBottom="true"
                Android:transcriptMode="alwaysScroll">
17
Tam Dao
 scrollView.postDelayed(new Runnable() {
        @Override
        public void run() {
            scrollView.fullScroll(ScrollView.FOCUS_DOWN);
        }
    },1000);
8
Makvin

ビューにデータを追加した直後に、次の1行を追加します。

yourScrollview.fullScroll(ScrollView.FOCUS_DOWN);
3
LEMUEL ADANE

これを試して

    final ScrollView scrollview = ((ScrollView) findViewById(R.id.scrollview));
    scrollview.post(new Runnable() {
       @Override
       public void run() {
         scrollview.fullScroll(ScrollView.FOCUS_DOWN);
       }
    });
3
F.O.O

UIコンポーネントを初期化し、データを入力した後。 on createメソッドにこれらの行を追加します

Runnable runnable=new Runnable() {
        @Override
        public void run() {
            scrollView.fullScroll(ScrollView.FOCUS_DOWN);
        }
    };
    scrollView.post(runnable);
1
Ramzy Hassan

これがこれを行う最良の方法です。

scrollView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            scrollView.post(new Runnable() {
                @Override
                public void run() {
                    scrollView.fullScroll(View.FOCUS_DOWN);
                }
            });
        }
});
1
rana