WebView白屏怎么解决?
How to resolve the white Screen of WebView?
我正在使用下面的代码用本地 html 文件填充我的 WebView
,但它在某些设备上看起来很好,但最近我注意到在某些设备上,例如 Colors X114
,WebView
显示正常一秒钟,然后一切消失,出现白色空白屏幕。
代码:
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");
看到你必须在其中启用 JavaScriptEnabled
并且在 url 中必须有 http:
wv1.getSettings().setLoadsImagesAutomatically(true);
wv1.getSettings().setJavaScriptEnabled(true);
wv1.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
wv1.loadUrl(url);
您可以在这些链接中获取基本信息:
你试试这个:
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setAllowContentAccess(true);
settings.setDomStorageEnabled(true);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl(url);
您很可能遇到过视图图层类型的问题。
试试这个代码:
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);
}
并尝试在清单中设置硬件加速:
android:hardwareAccelerated="true"
请参阅此link了解更多详情。
我的网站有问题。所有申请请求都发送至 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}
白屏消失,应用正常运行。
我正在使用下面的代码用本地 html 文件填充我的 WebView
,但它在某些设备上看起来很好,但最近我注意到在某些设备上,例如 Colors X114
,WebView
显示正常一秒钟,然后一切消失,出现白色空白屏幕。
代码:
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");
看到你必须在其中启用 JavaScriptEnabled
并且在 url 中必须有 http:
wv1.getSettings().setLoadsImagesAutomatically(true);
wv1.getSettings().setJavaScriptEnabled(true);
wv1.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
wv1.loadUrl(url);
您可以在这些链接中获取基本信息:
你试试这个:
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setAllowContentAccess(true);
settings.setDomStorageEnabled(true);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl(url);
您很可能遇到过视图图层类型的问题。 试试这个代码:
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);
}
并尝试在清单中设置硬件加速:
android:hardwareAccelerated="true"
请参阅此link了解更多详情。
我的网站有问题。所有申请请求都发送至 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}
白屏消失,应用正常运行。