Android Studio 如何解决WebView的白色屏幕?

ldioqlga  于 11个月前  发布在  Android
关注(0)|答案(6)|浏览(109)

我使用下面的代码来填充我的WebView与本地html文件,但它似乎在一些设备罚款,但最近我注意到在一些设备像 Colors X114WebView出现罚款一秒,然后一切都消失,出现白色空白屏幕.

代码:

package com.nepalpolice.mnemonics;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;

/**
 * Created by Sagar on 2017/09/23. yo chai menupage ko Fragments ko lagi
 */

public class Homepage extends Fragment {

    WebView myWebView;
    private LinearLayout container;
    private Button nextButton, closeButton;
    private EditText findBox;

    public Homepage() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View rootView = inflater.inflate(R.layout.fragment_homepage, container,  false);

        String url = getArguments().getString("url");

        myWebView=(WebView)rootView.findViewById(R.id.webview);
        myWebView.getSettings().setBuiltInZoomControls(true);

        myWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        myWebView.getSettings().setLoadsImagesAutomatically(true);
        myWebView.getSettings().setJavaScriptEnabled(true);

        myWebView.getSettings().setBuiltInZoomControls(true);

        myWebView.setInitialScale(1);
        myWebView.getSettings().setLoadWithOverviewMode(true);
        myWebView.getSettings().setUseWideViewPort(true);

        WebSettings webSettings = myWebView.getSettings();

        myWebView.loadUrl(url);

        return rootView;

    }

    public static String changedHeaderHtml(String htmlText) {

        String head = "<head><meta name=\"viewport\" content=\"width=device-width, user-scalable=yes\" /></head>";

        String closedTag = "</body></html>";
        String changeFontHtml = head + htmlText + closedTag;
        return changeFontHtml;

    }
}

字符串
这就是它的样子,或者应该是这样


的数据
但它如何出现在一些设备。



我将URL作为字符串传递如下

args3.putString("url1", "file:///android_asset/b/dbpm.html");

nbysray5

nbysray51#

你试试这个:

WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setAllowContentAccess(true);
settings.setDomStorageEnabled(true);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl(url);

字符串

axzmvihb

axzmvihb2#

你很可能遇到过视图图层类型的问题。试试下面的代码:

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    webSettings.setMixedContentMode(0);
    webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
} else if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
} else {
    webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}

字符串
并尝试在Manifest中设置硬件加速:

android:hardwareAccelerated="true"


请参阅此link了解更多详情。

cclgggtu

cclgggtu3#

看到你必须启用JavaScriptEnabled在它和在url必须有http:

wv1.getSettings().setLoadsImagesAutomatically(true);
wv1.getSettings().setJavaScriptEnabled(true);
wv1.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
wv1.loadUrl(url);

字符串
您可以在这些链接中获取基本信息:

polhcujo

polhcujo4#

我可以通过重写WebViewClient类来修复它,只需实现onPageFinished()进行验证,而页面的加载进度已经完成。
有时可能会出现页面内容未完全加载的情况。请重新加载页面,直到达到100%。

while(view.getProgress() < 100) ()-> {view.reload()};

字符串
你应该实现一些类似超时验证的东西。

private class MyWebViewClient extends WebViewClient
{
   @Override
   public void onPageFinished(WebView view, String url)
   {
      try
      {
         while(view.getProgress() < 100)
         {
             view.reload();
         }
      }
      catch (Exception e)
      {
         e.printStackTrace();
      }
   }
}

eqfvzcg8

eqfvzcg85#

我的网站有问题。所有的申请请求都转到了AJAX。

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH'])')
{//the result is returned to the application}

字符串
然后我把请求改成

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{//does not return to the application}


白色屏幕消失了,应用程序正在工作。

92dk7w1h

92dk7w1h6#

使您的网页浏览高度和宽度匹配父

<WebView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/webview"/>

字符串
这对我很有效

相关问题