Как прокручивать вниз в ScrollView при запуске активности
Я показываю некоторые данные в ScrollView. При запуске активности (метод onCreate) я заполняю ScrollView данными и хочу прокрутить вниз.
Я попытался использовать getScrollView().fullScroll(ScrollView.FOCUS_DOWN)
. Это работает, когда я делаю это как действие при нажатии кнопки, но он не работает в методе onCreate.
Есть ли способ прокрутки ScrollView в нижней части запуска активности? Это означает, что представление уже прокручивается снизу при первом отображении.
Ответы
Ответ 1
Это нужно сделать следующим образом:
getScrollView().post(new Runnable() {
@Override
public void run() {
getScrollView().fullScroll(ScrollView.FOCUS_DOWN);
}
});
Таким образом, представление сначала обновляется, а затем прокручивается до "нового" дна.
Ответ 2
Поместите следующий код после добавления ваших данных:
final ScrollView scrollview = ((ScrollView) findViewById(R.id.scrollview));
scrollview.post(new Runnable() {
@Override
public void run() {
scrollview.fullScroll(ScrollView.FOCUS_DOWN);
}
});
Ответ 3
Это работает для меня:
scrollview.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
scrollview.post(new Runnable() {
public void run() {
scrollview.fullScroll(View.FOCUS_DOWN);
}
});
}
});
Ответ 4
Вы можете сделать это в файле макета:
android:id="@+id/listViewContent"
android:layout_width="wrap_content"
android:layout_height="381dp"
android:stackFromBottom="true"
android:transcriptMode="alwaysScroll">
Ответ 5
Сразу после добавления данных в представление добавьте эту единственную строку:
yourScrollview.fullScroll(ScrollView.FOCUS_DOWN);
Ответ 6
Попробуйте это
final ScrollView scrollview = ((ScrollView) findViewById(R.id.scrollview));
scrollview.post(new Runnable() {
@Override
public void run() {
scrollview.fullScroll(ScrollView.FOCUS_DOWN);
}
});
Ответ 7
Это лучший способ сделать это.
scrollView.getViewTreeObserver().addOnGlobalLayoutListener(new
ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
scrollView.post(new Runnable() {
public void run() {
scrollView.fullScroll(View.FOCUS_DOWN);
}
});
}
Ответ 8
После инициализации компонента пользовательского интерфейса и заполнения его данными. добавьте эту строку в свой метод create
Runnable runnable=new Runnable() {
@Override
public void run() {
scrollView.fullScroll(ScrollView.FOCUS_DOWN);
}
};
scrollView.post(runnable);
Ответ 9
scrollView.postDelayed(new Runnable() {
@Override
public void run() {
scrollView.fullScroll(ScrollView.FOCUS_DOWN);
}
},1000);