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>下面是代码:
下面是解决scrollview和webview的滑动冲突代码
webView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent ev) {
((WebView)v).requestDisallowInterceptTouchEvent(true);
return false;
}
});
这是布局
<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 webview加载https网页时图片无法加载显示问题
- Android webview加载https网页时http图片无法显示
- android webview 加载显示网页加载进度条的例子
- Android显示webview加载的网页源码
- Android--当webview加载网页的时候在标题栏上显示加载进度
- Android 5.0中使用webView 加载网页不显示图片问题
- Android中webview加载网页无法点击或滚动
- Android:WebView加载url网页显示不完整解决办法
- Android WebView 加载网页只显示空白页
- Android--当webview加载网页的时候在标题栏上显示加载进度
- android webView加载页面时显示出全部网页内容
- Android中【下拉刷新/上拉加载】WebView网页控件,Snackbar+CoordinatorLayoutt提示框(指定位置显示的提示框)
- Android WebView加载网页不显示图片解决办法
- AndroidWebView的销毁和无法加载天猫网页的问题
- Android 5.0中使用webView 加载网页不显示图片问题
- android webview 加载网页显示对话框
- android webview 加载重定向页面时点击无法回退,导致重复加载当前页面问题的解决方案
- android中WebView加载网页居中显示
- android中WebView加载网页居中显示
- android webView加载页面时显示出全部网页内容