I have a NestedScrollView populated with a vertical LinearLayout, which itself has a bunch of children of various view types: multiple TextViews, two static GridViews, and e
It seems to it's finally fixed in 28.0.0 Support lib, so NestedScrollView.smoothScrollTo()
works as expected for me
This code works for me.
scrollView.post {
scrollView.fling(0)
scrollView.fullScroll(ScrollView.FOCUS_UP)
}
UPDATE:
Found a better solution. Try this combo:
scrollView.fling(0); // Sets mLastScrollerY for next command
scrollView.smoothScrollTo(0, 0); // Starts a scroll itself
Looks like a hack, but works well on both my devices (tested with Support Library 26.0.0 & 27.0.2). Can be used to scroll smoothly to any other position. Based on the idea that the problem lies in missing update of mLastScrollerY.
Please leave a feedback if it works for you or not.
Original answer:
Hit this issue too.
NestedScrollView.smoothScrollTo(0, 0)
worked in Support Library up to 25.4.0, and doesn't work since 26.0.0 up to current 27.0.2. The contents of NestedScrollView doesn't matter (some TextViews are enough).
This bug is already reported twice on Google Issue Tracker. Minimal project to reproduce it can be found on GitHub.
Found two working solutions:
NestedScrollView.scrollTo(0, 0)
(see accepted answer, jumps abruptly)NestedScrollView.fling(-10000)
(scrolls smoothly, but appropriate velocity value depends on current position, device, desired scrolling time and so on)It was not necessary to change focusability in my case.
try this
add android:descendantFocusability="blocksDescendants"
to the LinearLayout
inside NestedScrollView
and this also
to scroll to top of NestedScrollView
use this
NestedScrollView.scrollTo(0, 0);
Edit
Use fling() and smoothScrollTo togather
nestedScrollView.post(new Runnable() {
@Override
public void run() {
nestedScrollView.fling(0);
nestedScrollView.smoothScrollTo(0, 0);
}
});