WebView自适应并嵌套在ScrollView里
大致思路:通过流的形式把网页抓取下来,然后对webView进行设置。
1.对webView进行设置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | web.setWebViewClient( new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); // Log.e("Test", "url....=" + url); return true ; } @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { super .onReceivedSslError(view, handler, error); handler.proceed(); } }); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { web.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING); } else { web.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL); } |
2.抓取网页数据:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | private String getHtmlData(String bodyHTML) { String head = "<head>" + "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\"> " + "<style>img{max-width: 100%; width:auto; height:auto;}</style>" + "</head>" ; return "<html>" + head + "<body>" + bodyHTML + "</body></html>" ; } private String getHtmlString(String urlString) { try { URL url = new URL(urlString); URLConnection ucon = url.openConnection(); InputStream instr = ucon.getInputStream(); BufferedInputStream bis = new BufferedInputStream(instr); ByteArrayBuffer bau = new ByteArrayBuffer( 500 ); int current = 0 ; while ((current = bis.read()) != - 1 ) { bau.append(( byte ) current); } return EncodingUtils.getString(bau.toByteArray(), "utf-8" ); } catch (Exception e) { return "" ; } } |
用法:
1 2 | html = getHtmlData(getHtmlString(url)); web.loadData(html, "text/html; charset=UTF-8" , null ); //这种写法可以正确解码 |
解决乱码问题:
1 | web.getSettings().setDefaultTextEncodingName( "UTF-8" ); |
设置webView和scrollView一起滚动:
1 2 3 4 5 6 | <ScrollView android:layout_width= "fill_parent" android:layout_height= "match_parent" android:descendantFocusability= "blocksDescendants" > </ScrollView> |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步