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 时显示进度条?
必须两次加载数据才能在 Android 中刷新 WebView