【发布时间】:2011-08-25 01:02:24
【问题描述】:
我正在开发一个在 WebView 中显示内容的 Android 应用程序。内容包含链接,这些链接是通过自定义 WebViewClient 处理的,并使用 javascript 和 shouldOverrideUrlLoading() 方法来跟踪链接,具体取决于链接是什么。
问题来了:
我想根据点击发生在 WebView 上的位置来处理不同的点击。特别是,我想在用户单击 WebView 时进行一些 UI 更改,但不单击链接。
我发现 onTouch 方法在调用 shouldOverrideUrlLoading() 方法之前完成并完成(包括 super.onTouch),并且我找不到任何在 WebView post-shouldOverrideUrlLoading() 上运行的方法的指示.我也在使用 GestureDetector,并且再次,它的 onSingleTapUp() 方法在 shouldOverrideUrlLoading() 代码被触发之前完成。
必须通过某种方式来通知 WebView 上发生点击时是否应该在完成事件之前运行 shouldOverrideUrlLoading() 代码。
有人对在哪里看有什么建议吗? 有人知道在 shouldOverrideUrlLoading() 代码执行后在 WebView 上调用的执行点吗?
谢谢, 戴尔。
【问题讨论】:
-
您是否只想处理 web 视图中任何非链接的点击?或者您是否尝试获取点击特定非链接项目的事件?
-
谢谢蒂姆。我想要以下逻辑:如果点击链接 { // 做某事 } else { // 做其他事情 }
-
好的,你的链接是否按照你想要的方式正常工作,现在你只是想让非链接工作?
-
没错,蒂姆。链接有自己的逻辑,但这在这里并不重要。我想要的是能够在这两件事为真时触发一些代码:1)在 webview 上发生触摸 2)该触摸没有导致 shouldOverrideUrlLoading() 调用(即,它不是链接)作为据我所知, shouldOverride.. 逻辑出现在 WebViews 本机 onTouch 处理之后,这导致了我的问题。
标签: android url webview webviewclient