Android WebView à l'intérieur de ScrollView défile uniquement le scrollview
Dans mon application j'ai un ScrollView qui contient quelques linearviews, certains textviews et Une Webview, puis d'autres linéaire mises en page etc. Le problème est que la WebView ne défile pas. Le Défilement écoute uniquement sur le ScrollView.
Toutes les suggestions??
<ScrollView >
<TextView />
<WebView /> <-- this does not scroll
<TextView />
</ScrollView >
Vous devez vous connecter pour publier un commentaire.
Voici la solution. Trouvés en ligne. J'ai sous-classé WebView et je suis en utilisant le
requestDisallowInterceptTouchEvent(true);
méthode pour permettre à mon webview pour gérer l'événement scroll.Et dans layout.xml
WebView
.return super.onTouchEvent(event);
avecreturn false;
danspublic boolean onTouchEvent(MotionEvent event)
De la solution fournie par @panos fonctionne, mais il a encore des problèmes lorsqu'ils sont utilisés avec le ScrollView. Le suivant version améliorée permet de surmonter ce problème.
En outre, vous pouvez avoir les paramètres suivants pour votre TouchyWebView.
WebView
est scrollable seulement par deux doigts, avec un seul doigt parent est de défilement... pas si intuitive :/MotionEventCompat.findPointerIndex(event, 0)
est maintenant obsolète, nous devrions utiliserevent.findPointerIndex(0)
à la place.Panos solution est suffisante pour moi, avec une exception... Ma hauteur fixe (200dp)
WebView
peut être vide ou peut avoir chargé beaucoup de contenu. De sorte qu'il peut être ou peut être pas scrollable "lui-même". Panos solution est de consommerMotionEvent
s toujours, alors quandWebView
est vide et que l'utilisateur toucheWebView
et essayez de faire défiler puisWebView
ne sera pas de défilement (car il n'y a pas de contenu) et défilement de parent, causeWebView
"hirondelles"MotionEvent
- si rien ne se passe. J'ai ajouté des petitsif
de déclaration pour le comportement attendu:WebView
est vide et non-vertical liste déroulante puiscomputeVerticalScrollRange() == getMeasuredHeight()
WebView
ont un contenu plus que sa hauteur est de défilement) puiscomputeVerticalScrollRange() > getMeasuredHeight()
Juste ajouter une ligne dans le fichier de classe
ou ajouter dans
Webview
balise XMLTravail hors de solutions de @Panos et @Dipendra, j'ai encore eu quelques problèmes avec une mapview à l'intérieur d'un scrollview. Il ne serait pas constamment faire défiler verticalement et les méthodes ont été désapprouvées j'ai donc travaillé cette astuce que j'utilise avec mapview à l'intérieur de scrollviews et fonctionne très bien. J'espère que cela peut aider quelques un d'entre vous.
}
J'ai également suivi @Dipendra des conseils sur les paramètres des contrôles.
se produit toujours dans le
react-native-webview
, question suivis icihttps://github.com/react-native-community/react-native-webview/issues/22
Vous pouvez changer en 3 configurations: