您的位置:首页 > 移动开发

Android中scrollview嵌套webview后导致网页加载成功但无法显示

2017-02-03 16:45 543 查看
                   今天同事提出了一个bug,关于h5页面无法显示为空白页,因为这块的代码不是我写的,之前同事写的,所以我就看了一下代码,初看没什么问题,因为感觉这没什么难度,就是一个webview.loaduri(uri).后来检查布局也没问题,无奈之下换了一个百度的链接,是可以,然后就分析查资料,原来是scrollview和webview都有焦点和滑动事件,高度无法自适应,所以我就在监听webview加载完后重新设置高度就可以了。我直接上关键代码了,给自己做个笔记,希望也能帮助遇到同样问题的同学。

这是布局

<ScrollView
android:id="@+id/scroll_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/btn_share_next_step"
android:layout_below="@+id/goods_navigation_bar"
android:descendantFocusability="blocksDescendants"
android:orientation="vertical"
android:scrollbars="none">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>

</ScrollView>下面是代码:
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);//设置能够解析Javascript
webSettings.setDomStorageEnabled(true);//设置适应Html5的一些方法
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//                return super.shouldOverrideUrlLoading(view, url);
webView.loadUrl(url);
return true;
}

@Override
public void onPageFinished(WebView view, String url) {
//                super.onPageFinished(view, url);
progress.setVisibility(View.GONE);
LinearLayout.LayoutParams  params = (LinearLayout.LayoutParams) webView.getLayoutParams();
params.width = getScreenWidth();
params.height = getScreenHeight()-SizeUtil.dip2px(ScreenShotByH5Activity.this,150);
webView.setLayoutParams(params);
}

@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
progress.setVisibility(View.VISIBLE);
}

@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);
progress.setVisibility(View.GONE);
showToastMessage("加載失敗");
}
});
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(url);


下面是解决scrollview和webview的滑动冲突代码
webView.setOnTouchListener(new View.OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent ev) {

((WebView)v).requestDisallowInterceptTouchEvent(true);

return false;
}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android ui 界面