работает как положено для меня
я есть NestedScrollView, заполненный вертикальным LinearLayout, который сам имеет группу дочерних элементов различных типов представлений: несколько TextViews, два статических GridViews и даже FrameLayout, чтобы показать фрагмент под всем этим.
При нажатии кнопки «Назад», если пользователь прокрутил ниже определенной точки, вместо завершения действия, вызывается метод «scrollToTop»:
public static void scrollToTop(final NestedScrollView scrollview) {
new Handler().postDelayed(new Runnable() {
public void run() {
scrollview.fullScroll(NestedScrollView.FOCUS_UP);
}
}, 200);
}
Это работает в предыдущей версии моего приложения, которое находится в магазине Play. Но теперь, после обновления моего приложения до целевого Android Oreo (и обновления библиотеки поддержки до версии 26.0.2), вместо прокрутки вверх, кажется, что он начинает прокручиваться из-под исходного положения прокрутки NestedScrollView и останавливается там, где он был. Так что это выглядит как странное заикание. В некоторых позициях, однако, он прокручивается до вершины (хотя и очень редко и непоследовательно), а в других он фактически прокручивается до низа, по какой причине я не понимаю.
Я экспериментировал с фокусом зрения, но безрезультатно. Например, я прочитал, что Static GridViews могут прерывать фокус при прокрутке. Я также пробовал различные способы прокрутки вверх, такие как
scrollview.pageScroll(View.FOCUS_UP);
а также
scrollview.smoothScrollTo(0,0);
Но ничего не работает. Что-то не так с библиотекой поддержки на этот раз?