You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android WebView加载API返回内容无法完整显示问题求助

Android WebView无法完整展示HTML内容问题排查与解决

问题场景

通过API获取HTML格式的新闻内容后,Log打印newsDetailModel.getFullContent()能显示完整数据,但WebView加载后无法完整展示内容。相关实现代码与布局如下:

Java代码

Log.e("content",newsDetailModel.getFullContent()); // 能打印全部数据
WebSettings settings = news_details_content.getSettings();
settings.setJavaScriptEnabled(true);
settings.setAllowContentAccess(true);
settings.setDomStorageEnabled(true);
news_details_content.setWebChromeClient(new WebChromeClient());
           
String content = newsDetailModel.getFullContent();
news_details_content.loadData(content, "text/html", "utf8");

布局代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@color/background">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:padding="10dp">

        <ImageView
            android:id="@+id/news_details_image"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:scaleType="fitXY"/>
  
        <WebView
            android:id="@+id/news_details_content"
            android:layout_width="match_parent"
            android:layout_gravity="right"
            android:layout_height="wrap_content"/>

    </LinearLayout>
</RelativeLayout>

解决方案

1. 替换loadData为loadDataWithBaseURL

loadData对特殊字符、中文及复杂HTML实体的处理存在局限,改用loadDataWithBaseURL能更稳定地解析内容:

String content = newsDetailModel.getFullContent();
news_details_content.loadDataWithBaseURL(null, content, "text/html", "UTF-8", null);

2. 调整WebView布局高度配置

当前WebView的layout_height设为wrap_content时,WebView可能无法正确计算内容高度导致截断。建议通过权重分配让WebView占据剩余屏幕空间:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="10dp">

    <ImageView
        android:id="@+id/news_details_image"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:scaleType="fitXY"/>

    <WebView
        android:id="@+id/news_details_content"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"/>

</LinearLayout>

3. 修复HTML内容结构

如果原始HTML存在未闭合标签或样式限制,可包裹基础HTML结构确保解析正常:

String formattedContent = "<html><body style='margin:0; padding:0;'>" + newsDetailModel.getFullContent() + "</body></html>";
news_details_content.loadDataWithBaseURL(null, formattedContent, "text/html", "UTF-8", null);

4. 启用WebView自适应屏幕

添加配置让WebView自适应屏幕宽度,避免内容超出可视区域:

WebSettings settings = news_details_content.getSettings();
// 保留原有配置
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);
settings.setDefaultZoom(WebSettings.ZoomDensity.MEDIUM);

内容的提问来源于stack exchange,提问作者S.M_Emamian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 07:40:21