Ответ 1
Затем вы напишите следующее:
scrollViewEventDetails.fullScroll(View.FOCUS_UP);//if you move at the end of the scroll
scrollViewEventDetails.pageScroll(View.FOCUS_UP);//if you move at the middle of the scroll
У меня есть две кнопки, которые переключаются на следующий список событий и на предыдущий.
Когда я перехожу к следующему\предыдущему событию, свитки остаются где-то внизу. Но мне нужно "перемотать" его.
Я пытаюсь:
scrollViewEventDetails.pageScroll(ScrollView.FOCUS_UP);
и:
scrollViewEventDetails.scrollTo(0, 0);
но это не сработает. Пожалуйста, помогите!
Затем вы напишите следующее:
scrollViewEventDetails.fullScroll(View.FOCUS_UP);//if you move at the end of the scroll
scrollViewEventDetails.pageScroll(View.FOCUS_UP);//if you move at the middle of the scroll
Это не сработало для меня:
scrollViewEventDetails.fullScroll(View.FOCUS_UP); //if you move at the end of the scroll
Это сработало для меня:
scroll_view.smoothScrollTo(0,0);
scrollview.pageScroll(View.FOCUS_UP);
более последователен и работает для меня.:)
Время этих вызовов имеет решающее значение. getViewTreeObserver(). addOnGlobalLayoutListener не работал у меня, но с помощью обратного вызова onWindowFocusChanged в моей активности выполнялось:
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
mScrollView.fullScroll(View.FOCUS_UP);
}
}
Я знаю, что это старый пост, но есть причина, по которой код будет работать в некоторых местах, а не в других. Он будет прерван основным потоком, если вызван в неправильном месте, особенно если ScrollView должен прокручиваться на большое расстояние. Поэтому поместите свой вызов в свою нить. Фиксированный.
(new Thread(new Runnable(){
public void run(){
mScrollView.fullScroll(View.FOCUS_UP);
}
})).start();