Как прокрутить вниз в ScrollView при запуске активности
Я показываю некоторые данные в ScrollView. При запуске активности (метод onCreate) я заполняю ScrollView данными и хочу прокрутить вниз.
Я пытался использовать getScrollView().fullScroll(ScrollView.FOCUS_DOWN). Это работает, когда я делаю это как действие при нажатии кнопки, но оно не работает в методе onCreate.
есть ли способ, как прокрутить ScrollView в нижней части при запуске активности? Это означает, что представление уже прокручивается вниз при первом отображении.
9 ответов:
Это должно быть сделано следующим образом:
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">
сразу после добавления данных в представление добавьте эту единственную строку:
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); } });
scrollView.postDelayed(new Runnable() { @Override public void run() { scrollView.fullScroll(ScrollView.FOCUS_DOWN); } },1000);
после инициализации компонента пользовательского интерфейса и заполнить ее данными. добавьте эти строки в свой метод 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); } }); } });
Comments