Comment empêcher une défilement de défilement à une vue Web après le chargement des données?

J’ai donc un problème fascinant. Malgré le fait que je ne fais pas défiler manuellement ou par programmation mon affichage, mon WebView est automatiquement fait défiler après le chargement des données qu’il contient.

J’ai un fragment dans un viewpager. Lorsque je charge le pager pour la première fois, il fonctionne comme prévu et tout est affiché. Mais une fois que je “retourne la page”, les données se chargent et le WebView apparaît en haut de la page, masquant les vues au-dessus, ce qui est indésirable.

Est-ce que quelqu’un sait comment empêcher cela?

Ma mise en page ressemble à ceci:

          

Je ne mets pas non plus l’accent sur quoi que ce soit. Par défaut, il semble faire défiler automatiquement vers WebView après son chargement. Comment puis-je empêcher cela?

Vous pouvez simplement append ceci à votre LinearLayout: android: focusableInTouchMode = “true”. Ça marche pour moi.

   

J’ai eu le même problème, après des heures à essayer plusieurs idées, ce qui a finalement fonctionné pour moi a été simplement d’append l’atsortingbut descendantFocusability aux ScrollView contenant LinearLayout, avec la valeur blockDescendants . Dans ton cas:

  

Le problème ne s’est pas reproduit depuis 🙂

Vous devez créer une nouvelle extension de classe ScrollView, puis Override requestChildFocus:

 public class MyScrollView extends ScrollView { @Override public void requestChildFocus(View child, View focused) { if (focused instanceof WebView ) return; super.requestChildFocus(child, focused); } } 

Ensuite, dans votre mise en page XML, en utilisant:

  

Ça marche pour moi. ScrollView ne défilera plus automatiquement vers WebView.

L’ajout de ces lignes dans la disposition principale résout le problème

 android:descendantFocusability="blocksDescendants" 

Comme ça:

   

Il y a probablement des gens qui ont le même problème que moi, alors je vais vous aider.

J’essayais de mettre Android: descendantFocusability = “beforeDescendants” dans mon ScrollView principal comme suit:

  /*my linearlayout or whatever to hold the views */ 

et cela ne fonctionnait pas, donc j’ai dû faire un RelativeLayout le parent du ScrollView, et placer le Android: descendantFocusability = “beforeDescendants” dans le parent aussi.

Je l’ai donc résolu en procédant comme suit:

   /*my linearlayout or whatever to hold the views */ 

Je devais utiliser le nom complet pour MyScrollView, sinon j’ai eu une exception de gonflement.