ScrollViewにいくつかのデータを表示しています。アクティビティの起動時に(メソッドonCreate)ScrollViewにデータを入力し、一番下までスクロールしたい。
getScrollView().fullScroll(ScrollView.FOCUS_DOWN)
を使用しようとしました。これは、ボタンをクリックしたときのアクションとして作成したときに機能しますが、onCreateメソッドでは機能しません。
アクティビティの起動時にScrollViewを一番下までスクロールする方法はありますか?つまり、最初に表示されるとき、ビューはすでに下にスクロールされています。
次のように実行する必要があります。
getScrollView().post(new Runnable() {
@Override
public void run() {
getScrollView().fullScroll(ScrollView.FOCUS_DOWN);
}
});
この方法では、ビューが最初に更新され、次に「新しい」下部までスクロールします。
データが追加された後に次のコードを追加します。
final ScrollView scrollview = ((ScrollView) findViewById(R.id.scrollview));
scrollview.post(new Runnable() {
@Override
public void run() {
scrollview.fullScroll(ScrollView.FOCUS_DOWN);
}
});
これは私のために働く:
scrollview.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
scrollview.post(new Runnable() {
public void run() {
scrollview.fullScroll(View.FOCUS_DOWN);
}
});
}
});
レイアウトファイルでこれを行うことができます。
Android:id="@+id/listViewContent"
Android:layout_width="wrap_content"
Android:layout_height="381dp"
Android:stackFromBottom="true"
Android:transcriptMode="alwaysScroll">
scrollView.postDelayed(new Runnable() {
@Override
public void run() {
scrollView.fullScroll(ScrollView.FOCUS_DOWN);
}
},1000);
ビューにデータを追加した直後に、次の1行を追加します。
yourScrollview.fullScroll(ScrollView.FOCUS_DOWN);
これを試して
final ScrollView scrollview = ((ScrollView) findViewById(R.id.scrollview));
scrollview.post(new Runnable() {
@Override
public void run() {
scrollview.fullScroll(ScrollView.FOCUS_DOWN);
}
});
UIコンポーネントを初期化し、データを入力した後。 on createメソッドにこれらの行を追加します
Runnable runnable=new Runnable() {
@Override
public void run() {
scrollView.fullScroll(ScrollView.FOCUS_DOWN);
}
};
scrollView.post(runnable);
これがこれを行う最良の方法です。
scrollView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
scrollView.post(new Runnable() {
@Override
public void run() {
scrollView.fullScroll(View.FOCUS_DOWN);
}
});
}
});