我有我使用与嵌套在LinearLayout中(垂直)一FrameLayout里嵌入的WebView在Android 2.3.3运行模拟器开发Android应用程序。 不管我用什么代码,它从来没有真正做任何事情。 我有设定为INTERNET的Android应用程序的权限。 甚至试图加载只是HTML代码时。 我得到一个空白页,没有错误什么都没有。 在logcat中没有为好。
WebView wview = (WebView)findViewById(R.id.webView1);
wview.getSettings().setJavaScriptEnabled(true);
我已经尝试了所有这三种尝试任何加载到网页视图:
wview.loadUrl("http://www.google.com");
wview.loadData("<HTML><BODY><H3>Test</H3></BODY></HTML>","text/html","utf-8");
wview.loadDataWithBaseURL(null, "<HTML><BODY><H3>Test</H3></BODY></HTML>","text/html","utf-8",null);
所有这三个给我相同的结果。 没有。
有任何想法吗?
Answer 1:
wbView.getSettings().setDomStorageEnabled(true);
Answer 2:
这可能是一个有点晚,但我想与大家分享我的经验,因为我有同样的问题,花了很多时间在上面。
把你WebView
在RelativeLayout
,而不是在FrameLayout
。
我已经测试:我WebView
的onPageFinished()
被调用每一次,但在屏幕上我得到了空白页。 从chrome://inspect
WebView
调试我能“平”我WebView
按inspect
按钮,在之后WebView
立即刷新。 我的想法- WebView
未正确呈现FrameLayout
,并RelativeLayout
修复该问题(甚至invalidate()
和requestLayout()
调用没有帮助)。
Answer 3:
我认为,如果你修改一些代码的那么这将是ok.Look我怎么做我的情况below.Try你这样..
用于显示网页
final WebView wbView = (WebView) findViewById(R.id.WebView);
wbView.getSettings().setJavaScriptEnabled(true);
wbView.loadUrl("https://play.google.com/store/apps");
wbView.clearView();
wbView.measure(100, 100);
wbView.getSettings().setUseWideViewPort(true);
wbView.getSettings().setLoadWithOverviewMode(true);
对于显示HTML:
请参见本教程..
Answer 4:
我给了+1,因为这些都是以让web视图正常工作都有效的援助,但它不是解决我的问题。
我不知道是我对我的包括web视图布局的WRAP_CONTENT,这导致它有0像素的高度。 通过将其设置为我FILL_PARENT解决了这个问题。 (网页视图白色背景和应用程序与你真的不能告诉它不是完整的高度时,它显示为布局设计全高度的白色背景。)
感谢您的帮助,但!
Answer 5:
clearView
已被弃用。
使用:
webView.loadUrl("about:blank")
Answer 6:
强似空,你应该传递一个空String
给它。 例如: ""
所以,你应该这样称呼它:
wview.loadDataWithBaseURL("", "<HTML><BODY><H3>Test</H3></BODY></HTML>","text/html","utf-8","");
Answer 7:
改变WRAP_CONTENT在网页视图布局FILL_PARENT。 它为我工作
Answer 8:
我想你需要的是WebViewClient。 设置webviewclient呼叫webview.loadUrl(_url)之后; 事端像这样的....
private void loadUrlInWebView(String _URL){
WebView myWebView = (WebView) findViewById(R.id.webviewer);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setUseWideViewPort(true);
webSettings.setLoadWithOverviewMode(true);
myWebView.setWebViewClient(new MyWebViewClient());
myWebView.loadUrl(_URL);
}
private class MyWebViewClient extends WebViewClient{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show();
}
}
Answer 9:
如果仍然不起作用,那么请尝试添加的“http://”或“https://”网址之前,它应该工作。
Answer 10:
尝试增加RAM为您的模拟设备。 这解决了这个问题对我来说。
我发现了这一点,通过查看监控的Android(安卓工作室)的logcat的消息。 下面的消息给了我什么是错的增加RAM的想法:
W/art: Throwing OutOfMemoryError "Failed to allocate a 6635532 byte allocation with 1170528 free bytes and 1143KB until OOM"
W/JavaBrowserViewRendererHelper: Error allocating bitmap
E/chromium: [ERROR:java_browser_view_renderer_helper.cc(132)] Error unlocking java bitmap pixels.
Answer 11:
我的WebView被显示在它的上面白色的空白方块 ,有时完全空白。 这只有当它被加载某些数据发生。
它更改为RelativeLayout的 ,并设置layout_height到match_parent为我工作。
<RelativeLayout xmlns:android=...
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:id="@+id/ll_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="3dp"
android:gravity="center_vertical"
android:orientation="horizontal">
.....
</RelativeLayout>
<WebView
android:id="@+id/web_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/ll_title"
android:background="@color/colorYellow" />
<ProgressBar
android:id="@+id/pb_spinning"
style="?android:attr/progressBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:visibility="gone" />
</RelativeLayout>
Answer 12:
您可以使用下面的代码,这将有利于:
WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.setWebViewClient(new MyWebViewClient());
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (Uri.parse(url).getHost().equals("www.example.com")) {
// This is my web site, so do not override; let my WebView load the page
return false;
}
// Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
}
Answer 13:
使用IP地址而不是网页的网址,然后使用以下SSL错误处理方法重载的WebClient
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed(); // Ignore SSL certificate errors
}
文章来源: android webview displaying blank page