On occasion links in the WebView will not respond. The highlight press color will appear around them but nothing happens. I am also using WebViewClient's shouldOverrideUrlLoading and t开发者_Go百科hat function is not called when this happens.
Edit:
I have narrowed this issue down to the following circumstances:
- The webpage is the first page a WebView opens.
- The webpage uses meta name="viewport" attribute in the html head
- The WebView is using WebView.getSettings().setUseWideViewPort(true);
- Android 2.1 (Doesn't appear to happen in later versions, didn't test earlier)
If a webpage meeting those above is opened no links will work. If another similar page is loaded, those links will not work either. It is not until you load a page without meta name="viewport" that links start to work. After a page without that meta attribute is opened and then you load a page with the meta viewport attribute, the links start working.
This seems like a ridiculous work around but I guess it works. The first time the WebView loads, if you load a blank dummy html file like
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title></title>
</head>
<body>
</body>
</html>
before you load anything else, it appears to fix the problem. It also looks like the dummy file has to load completely first, not just start loading.
Just a follow up on this problem : The op solution did not work for me. But I had setLongClickable
set to false
on the WebView
and it completely stopped the WebView
to respond to touch events but only on Android 2.1
.
Removing the line :
webview.setlongclickable(false);
made the WebView
responsive and working as expected again.
精彩评论