zoukankan      html  css  js  c++  java
  • Android WebView 加载富文本内容

    WebView加载数据的方式有两种:

    1. webView.loadUrl(data);//加载url
    2. webView.loadDataWithBaseURL(null,data, "text/html" , "utf-8", null);//加载html数据

     可以使用来加载富文本内容:

    webView.loadDataWithBaseURL(null,data, "text/html" , "utf-8", null);

    为了使WebView在手机上能更好的展示富文本内容,推荐如下的WebSetting:

     WebSettings settings = webView.getSettings();
            // 设置WebView支持JavaScript
            settings.setJavaScriptEnabled(true);
            //支持自动适配
            settings.setUseWideViewPort(true);
            settings.setLoadWithOverviewMode(true);
            settings.setSupportZoom(true);  //支持放大缩小
            settings.setBuiltInZoomControls(true); //显示缩放按钮
            settings.setBlockNetworkImage(true);// 把图片加载放在最后来加载渲染
            settings.setAllowFileAccess(true); // 允许访问文件
            settings.setSaveFormData(true);
            settings.setGeolocationEnabled(true);
            settings.setDomStorageEnabled(true);
            settings.setJavaScriptCanOpenWindowsAutomatically(true);/// 支持通过JS打开新窗口
            settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
            settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
            //设置不让其跳转浏览器
            webView.setWebViewClient(new WebViewClient() {
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    return false;
                }
            });
    
            // 添加客户端支持
            webView.setWebChromeClient(new WebChromeClient());
            // mWebView.loadUrl(TEXTURL);
    
            //不加这个图片显示不出来
            if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
                webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
            }
            webView.getSettings().setBlockNetworkImage(false);
    
            //允许cookie 不然有的网站无法登陆
            CookieManager mCookieManager = CookieManager.getInstance();
            mCookieManager.setAcceptCookie(true);
            mCookieManager.setAcceptThirdPartyCookies(webView, true);
    
            webView.loadUrl(URL);

    补充:

    当我们使用WebView加载富文本网页文件时,可能存在某些机型上展示内容乱码的问题。

    解决方案:

    1.首先设置html头文件为 utf-8,示例代码如下:

     <head>
        <title>这是标题</title>
        <meta name="content-type" content="text/html; charset=utf-8">
        <meta http-equlv="Content-Type" content="text/html;charset=utf-8">
    </head>

    2. 其次保证webView设置的编码与html设置编码一致:

    webview.getSettings().setDefaultTextEncodingName("utf-8"); 
  • 相关阅读:
    解决DataGridView绑定List后不能排序的问题
    最新的皮肤下载
    我收录的名言
    HttpRequest访问Https带有证书并使用WSDL文档生成代理类方案(2)
    最新的Functions 类
    华兴软通短信接口简单使用WebServices版
    最新的SqlHelper 类
    闲来没事写个记事本玩玩!!!
    "基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系"证书验证失败的解决过程(3)
    FCK配置
  • 原文地址:https://www.cnblogs.com/renhui/p/11401033.html
Copyright © 2011-2022 走看看