最简单的使用WebView的方法
Activity的Layout资源中增加 WebView 控件
<WebView android:id="@+id/webview" android:layout_width="200dp" android:layout_height="200dp" />
Activity的onCreate函数中获取 WebView 实例
final WebView webView = (WebView) findViewById(R.id.webview); webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }); webView.loadUrl("http://www.baidu.com");
- Mainifest文件中增加联网权限
<uses-permission android:name="android.permission.INTERNET"/>
小问题集锦
查看 WebView 是否出现了垂直滚动条
// 子类中增加函数(子类继承自WebView)
public boolean existVerticalScrollbar() {
return computeVerticalScrollRange() > computeVerticalScrollExtent();
}
中文乱码问题
WebView的默认编码是“Latin-1” 所以这样在显示中文的时候会出现乱码的现象。所以需要对webVIew的默认编码进行设定
webview.getSettings().setDefaultTextEncodingName("utf-8");
无缓存页面
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
下载的问题
// 我们知道下载需要建立 Listener
mCurrentWebView.setDownloadListener(new DownloadListener() {
@Override
public void onDownloadStart(String url, String userAgent,
String contentDisposition, String mimetype,
long contentLength) {
doDownloadStart(url, userAgent, contentDisposition, mimetype, contentLength);
}
});
但现在的问题是在百度图片网页点击下载,竟然会调到 onCreateWindow
mCurrentWebView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onCreateWindow(WebView view, final boolean dialog, final boolean userGesture, final Message resultMsg) {
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
addTab(false, mViewFlipper.getDisplayedChild());
transport.setWebView(mCurrentWebView);
resultMsg.sendToTarget();
return true;
}
}
这样会导致下载了,还生成了一个空白的窗口;如果在 onCreateWindow
函数中不作任何操作,又会导致点击下载按钮无任何响应
面对这种情况,可以
mCurrentWebView.getSettings()..setSupportMultipleWindows(false);