WebView 和加载数据在 Android Constraintlayout 中显示白屏

Posted

技术标签:

【中文标题】WebView 和加载数据在 Android Constraintlayout 中显示白屏【英文标题】:WebView and loadData showing white screen in Android Constraints Layout 【发布时间】:2017-09-01 15:18:01 【问题描述】:

我试图使用约束、webView 和 loadData,但我得到的只是一个白屏。当我更改为 LinearLayout 时,它起作用了。现在我尝试在约束内使用 LinearLayout,我得到一个白屏。是否有解决方案可以使用约束来完成这项工作? 谢谢;

主活动

package com.example.grady.webviewdemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.webkit.WebView;

public class MainActivity extends AppCompatActivity 

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        WebView mWebView = (WebView) findViewById(R.id.myWebView);
        String myhtmlString = "<html> <head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"></head><body>" +
                "<h2>This is a HTML Heading in Android WebView.</h2>\n" +
                "<p>This is a HTML paragraph in android WebView.</p>\n" +
                "\n" +
                "<h4>Following is HTML Table in WebView</h4>\n" +
                "<table border=\"1\" width=\"100%\">\n" +
                "  <tr>\n" +
                "    <td>Android</td>\n" +
                "    <td>WebView</td>\t\t\n" +
                "    <td>100</td>\n" +
                "  </tr>\n" +
                "  <tr>\n" +
                "    <td>Android</td>\n" +
                "    <td>WebView</td>\t\t\n" +
                "    <td>200</td>\n" +
                "  </tr>\n" +
                "  <tr>\n" +
                "    <td>Android</td>\n" +
                "    <td>WebView</td>\t\t\n" +
                "    <td>300</td>\n" +
                "  </tr>\n" +
                "</table>" +
                "</body></html>";
        mWebView.loadData(myHtmlString, "text/html; charset=UTF-8", null);
    

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    tools:context="com.example.grady.webviewdemo.MainActivity">

    <LinearLayout
        android:layout_
        android:layout_>

        <WebView
            android:id="@+id/myWebView"
            android:layout_
            android:layout_ />

    </LinearLayout>
</android.support.constraint.ConstraintLayout>

【问题讨论】:

我已经执行了您提供的代码示例。对我来说,它显示的是带有表格的 webview。 【参考方案1】:

您提供的代码对我有用。不过你可以试试这个:

XML:

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/root"
    android:layout_
    android:layout_>

    <WebView
        android:id="@+id/myWebView"
        android:layout_
        android:layout_
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

Gradle:

compile 'com.android.support.constraint:constraint-layout:1.0.2'

【讨论】:

match_parent 在 ConstraintLayout 中是不允许的。改用 android:layout_ android:layout_ 来匹配约束。【参考方案2】:

请删除约束布局作为父级并使用线性布局。

【讨论】:

为什么?你能解释一下为什么这会更好吗? 再好不过了。

以上是关于WebView 和加载数据在 Android Constraintlayout 中显示白屏的主要内容,如果未能解决你的问题,请参考以下文章

Android WebView 加载超长 JS 数据

Android:如何在将数据加载到 WebView 时显示进度条?

必须两次加载数据才能在 Android 中刷新 WebView

在 WebView (Android) 中保留数据

从原生android发送数据到webview javascript页面重新加载网页

Android:将 sqlite 数据库内容加载到 webview