Android之WebView使用集锦

来源:互联网 发布:java sock服务端 编辑:程序博客网 时间:2024/05/20 19:29

最简单的使用WebView的方法

  1. Activity的Layout资源中增加 WebView 控件

    <WebView    android:id="@+id/webview"    android:layout_width="200dp"    android:layout_height="200dp" />
  2. 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");
  3. 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);

下载的问题

// 我们知道下载需要建立 ListenermCurrentWebView.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);
0 0
原创粉丝点击