I have two buttons that switching to the next list of events and the previous one.
When I go to next\\previous event, scrolls remains somewhere below. But I need to
I know this is an old post but there is a reason the code will work some places and not others. It will get interrupted by the main thread if called in the wrong place, especially if the ScrollView must scroll a large distance. Therefore put your call in its own thread. Fixed.
(new Thread(new Runnable(){
public void run(){
mScrollView.fullScroll(View.FOCUS_UP);
}
})).start();
This did not work for me:
scrollViewEventDetails.fullScroll(View.FOCUS_UP); //if you move at the end of the scroll
This worked for me:
scroll_view.smoothScrollTo(0,0);
You shoud write next:
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
The timing of these calls is crucial. getViewTreeObserver().addOnGlobalLayoutListener didn't work for me but using the onWindowFocusChanged callback in my activity did:
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
mScrollView.fullScroll(View.FOCUS_UP);
}
}
scrollview.pageScroll(View.FOCUS_UP);
is more consistent and worked for me. :)