Android之WebView使用集锦

本文介绍了如何在Android应用中使用WebView控件的基本方法,并详细解释了如何在Activity的Layout资源中添加WebView控件,如何在onCreate函数中获取WebView实例,如何设置WebView的属性以避免中文乱码和无缓存页面的问题,以及如何处理下载和垂直滚动条出现的情况。此外,还提供了检查WebView是否出现垂直滚动条的方法和解决中文乱码的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最简单的使用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);

下载的问题

// 我们知道下载需要建立 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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值