web-dev-qa-db-fra.com

La vue de défilement imbriquée défile automatiquement vers le bas

J'ai un GridView dans un NestedScrollView. J'ai utilisé le code ci-dessous pour redimensionner le GridView chaque fois que le contenu du GridView est modifié. Cela fonctionne bien, mais le NestedScrollView défile jusqu'en bas lorsque je glisse du fragment 3 de l'application vers le fragment 2 (où réside le NestedScrollView). Cela ne se produit pas lors du passage du fragment 1 au fragment 2, bizarrement. Cela ne se produit pas non plus directement après le redimensionnement de GridView.

Comment puis-je réprimer le NestedScrollView de défiler vers le bas?

private static void resizeGridView(GridView gridView, int items, int columns) {
    ViewGroup.LayoutParams params = gridView.getLayoutParams();
    params.height = singleGridHeight * items;
    gridView.setLayoutParams(params);
    gridView.requestLayout();
}

Les méthodes système suivantes sont appelées lors du passage d'un fragment à l'autre: enter image description here

24
Luke Allison

Ajouter Android:descendantFocusability="blocksDescendants" à la disposition enfant dans NestedScrollView

126
Joseph Paddy

Si j'ajoute nestedScrollView.scrollTo(0, 0); à la fin de la méthode onLayoutChanged() du GridView, le problème est résolu. Cependant, il serait plus logique d'empêcher le nestedScrollView de défiler automatiquement en premier lieu.

Des idées?

1
Luke Allison