最近遇到一个问题,ScrollView嵌套WebView 的时候WebView在安卓8.0系统不显示,找了一堆网上的解决办法
1、让网站写死WebView 的高度,这个在我们的项目里面不太可行,我们的WebView是N张图片,高度不太方便写死
2、先试用webview.laodUrl("")占位,延时后再指定正确的url,这个试过了,貌似对我的项目没作用
3、用JavaScript来获取高度
m_webView.setWebViewClient(new MyWebViewClient()); if(Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2){ m_webView.m_webView.addJavascriptInterface(this, "App"); }
@JavascriptInterface public void resize(final float height) { System.out.println("height: " + height); ((Activity)getContext()).runOnUiThread(new Runnable() { @Override public void run() { //Toast.makeText(getActivity(), height + "", Toast.LENGTH_LONG).show(); //此处的 layoutParmas 需要根据父控件类型进行区分,这里为了简单就不这么做了 LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)m_webView.getLayoutParams(); params.height = (int)(height * getResources().getDisplayMetrics().density); m_webView.requestLayout(); } }); }
@Override public void onPageFinished(WebView view, String url) { view.loadUrl("javascript:App.resize(document.body.getBoundingClientRect().height)"); super.onPageFinished(view, url); }
我打印高度发现高度依然是0。
4、只好让网站帮忙了,因为我的项目特殊,WebView只显示图片,所以我就让网站把每张图片的宽高放到隐藏域里面,然后我获取每张图片的宽高,自己计算相对屏幕的宽高。然后。。。。发现只是加了隐藏域就可以正常显示了,有哪位大佬知道原理吗?