O fullScroll de NestedScrollView (View.FOCUS_UP) não está funcionando corretamente
Eu tenho um NestedScrollView preenchido com um LinearLayout vertical, que em si possui vários filhos de vários tipos de exibição: vários TextViews, dois GridViews estáticos e até um FrameLayout para mostrar um fragmento abaixo de tudo isso.
Ao pressionar o botão Voltar, se o usuário rolou abaixo de um certo ponto, em vez de concluir a Atividade, o método "scrollToTop" é chamado:
public static void scrollToTop(final NestedScrollView scrollview) {
new Handler().postDelayed(new Runnable() {
public void run() {
scrollview.fullScroll(NestedScrollView.FOCUS_UP);
}
}, 200);
}
Isso funciona na versão anterior do meu aplicativo, que está na Play Store. Mas agora, depois de atualizar meu aplicativo para direcionar o Android Oreo (e atualizar a biblioteca de suporte para a versão 26.0.2), em vez de rolar para o topo, parece começar a rolar abaixo da posição de rolagem original do NestedScrollView e parar onde estava. Então, isso apenas aparece como uma gagueira estranha. Em algumas posições, no entanto, ele rola para o topo (embora muito raramente e de maneira inconsistente), e outras, na verdade, rola para o fundo, pelo que não entendo.
Eu tenho experimentado a focabilidade da vista, sem sucesso. Por exemplo, eu li que os GridViews estáticos podem interromper o foco durante a rolagem. Também tentei vários métodos diferentes para rolar para cima, como
scrollview.pageScroll(View.FOCUS_UP);
e
scrollview.smoothScrollTo(0,0);
Mas nada parece funcionar. Há algo de errado com a biblioteca de suporte desta vez?