android webview css卡,安卓开发webview引用 html css属性不起作用的解决办法

最近做项目有一个详情页,返回的是html代码。注意不是html链接。里边图文混排。用textview 显示,发现以下问题。

文字没法两端对齐。

2.图片不居中显示。

3.原html里边字体的大小分好几种,textview显示出来特丑。但是设置textview 的字体大小。其实不没有卵用。

4。图片和文字上下贴的很紧。

最后没办法,用webview来展示吧。其实webview展示还是有个坑。直接丢进去会是乱码。乱码的解决方案网上有。

下面是人家的代码。

viewWebVeiw.loadData(html,"text/html; charset=UTF-8",null);

下面就是 我们如何引用 css属性,修改html代码里边的值解决我们上面的问题了。

String linkCss="

"\t\tbody img{width:100%!important;height: auto!important;padding-top: 50px!important;padding-bottom: 50px!important;}\n\n" +

"\t\tbody {font-size:25!important;}\n" +

"\t\tbody span{font-size: 25!important;}\n" +

"\t\tbody p{font-size: 25!important;}\t\t\t\t\n" +

"\t\t\n";

上面的字符串 我们用的时候 要添加早我们要展示的html代码中去。 这样:

String html = "" + linkCss + ""+"

" + content + "";

其中 content 是我们后台返回的html代码 "text-align:justify; 实现文字两端对齐。

linkCss 中的 之的设定 !important 代表强制引用。其实我不大懂 html 这段代码是朋友帮我写的。但是真的解决了我的问题。 图片需要宽度100% 高度自适应,并且 !important; 这句话绝对不能少,否则不管用。

最后 webview 展示的时候 这样 viewWebVeiw.loadData(html, "text/html; charset=UTF-8", null);完美解决。linkcss里边的 属性值 大家可以根据需求 自己改的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WebView 在加载一些比较复杂的页面时,可能会出现顿的情况,这通常是因为页面中包含了大量的 DOM 元素、JavaScript、CSS 文件等导致的。下面是一些可能有用的解决方法: 1. 启用硬件加速:在 AndroidManifest.xml 中为应用程序添加以下代码: ```xml <application android:hardwareAccelerated="true"> ``` 这可以将 WebView 的渲染工作转移到 GPU 上,从而提高性能。 2. 启用缓存:可以通过以下代码启用 WebView 缓存: ```java WebSettings webSettings = webView.getSettings(); webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); ``` 这会使 WebView 在加载页面时首先尝试从缓存中加载,如果缓存中没有,才会从网络上加载。这可以减少网络请求的数量,从而提高性能。 3. 减少页面中的 DOM 元素数量:可以通过减少页面中的 DOM 元素数量来减少 WebView 的渲染工作量。可以尝试通过压缩和合并 CSS、JavaScript 文件来减少请求的数量。 4. 使用 WebViewClient 和 WebChromeClient:可以使用 WebViewClient 和 WebChromeClient 来监视 WebView 的加载过程,并在必要时进行优化。以下是示例代码: ```java webView.setWebViewClient(new WebViewClient() { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { // 在页面开始加载时执行一些操作 } @Override public void onPageFinished(WebView view, String url) { // 在页面加载完成时执行一些操作 } @Override public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { // 在加载页面时发生错误时执行一些操作 } }); webView.setWebChromeClient(new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { // 在页面加载进度发生变化时执行一些操作 } }); ``` 通过使用 WebViewClient 和 WebChromeClient,您可以监视页面加载的进度,并在必要时执行一些操作,例如显示进度条、显示错误消息等。 5. 使用跨进程 WebViewAndroid 7.0 及更高版本支持跨进程 WebView,这可以将 WebView 的渲染工作转移到单独的进程中,从而提高性能。要使用跨进程 WebView,您需要在 AndroidManifest.xml 中添加以下代码: ```xml <meta-data android:name="android.webkit.WebView.EnableSafeBrowsing" android:value="true" /> ``` 然后在应用程序的代码中使用以下代码创建 WebView: ```java WebView webView = WebViewCompat.createCrossProcessWebView(context); ``` 这将创建一个跨进程 WebView,您可以在其中加载页面。请注意,跨进程 WebView 可能会增加一些额外的开销,因此应该根据实际需求进行使用。 希望这些解决方法能够帮助您解决 WebView 顿的问题。如果仍然存在问题,请提供更多详细信息,以便我能够更好地帮助您。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值