Je suis nouveau à Android.
Je voudrais simplement savoir où sur une page, l'utilisateur a défilé. Lorsqu'un certain point sur la page Web apparaît en bas de l'écran, je souhaite déclencher un événement. Mais ce code provoque une exception. Je sais que webview hériter Merci d'avance. P> getscrolly () code> à partir de la vue. Est-ce que je ne le mettez pas correctement? P>
5 Réponses :
et l'exception est?
Voici une note sur les hauteurs d'écran WebView de l'une de mes applications:
// current position (top) = getScrollY(); // max position = getContentHeight(); // screen height = getHeight();
Merci de répondre! C'est une nullpointerexception. Le débogueur s'arrête à la ligne "YPOS = webview.getscrolly ()" mais je ne peux pas comprendre où vient le pointeur NULL. Quant à votre note, j'utilise Getscrolly () Vous avez donc confirmé que c'est la bonne méthode, mais la façon dont j'utilise, c'est apparemment tort.
En fait, j'ai trouvé que dans la ligne "YPOS = webview.getscrolly ()", la variable "webview" est NULL, même si dans la méthode Oncreate ", webview webview = nouvelle webview (this);" travaille. La variable "webview" n'a-t-elle pas une portée qui s'étend de la méthode OnCreate? Et sinon, comment puis-je obtenir une poignée dessus?
@Dave il devrait être webview = nouvelle webview (this); Au lieu de webview webview = New Webview (this); dans oncreate (..).
Vous écrivez simple écrire
De cette façon, vous pouvez résoudre le problème du pointeur NULL. P> webview webview; code> à deux endroits à l'intérieur de la méthode Oncreate (). P>
webview = nouvelleview webview (this); code> au lieu de
webview webview = nouvelle webview (this); code> p> p>
LaView a une méthode pour obtenir sa hauteur de contenu, que j'ai utilisée dans ma solution:
cherche: p>
Nécessite le niveau d'API 23.
pour ceux qui utilisent un cadre ionique.
Obtenir le ScrollTop à partir de la webview Pour obtenir The Scrolltop of the webview Utilisation: P> JavaScript -> P> var scroller = $('#_ionic_content')[0].firstChild.offsetParent;
var scrollTop_pos = scroller.scrollTop;
Cela a fonctionné pour moi, je calcule la position de défilement de base.
mainWebView.setOnScrollChangeListener { view, scrollX, scrollY, oldScrollX, oldScrollY -> if (scrollY > 800) { supportActionBar!!.setDisplayHomeAsUpEnabled(true) toolbar.logo = resources.getDrawable(R.mipmap.ic_launcher) } else { supportActionBar!!.setDisplayHomeAsUpEnabled(false) toolbar.logo = null } Log.e(TAG, "initializeWeb: $scrollY") }