转自:http://stormzhang.github.io/android/2013/07/27/android-scrollview-nested-webview/
Android中WebView用来加载html页面,自带滑动效果。ScrollView同样也是自带滑动效果,在项目中如果需要WebView和一些其他view比如TextView一起滑动的话就必须外面嵌套一层ScrollView,这时问题就来了,嵌套之后ScrollView的滑动和WebView的滑动就会有冲突,WebView的滑动不流畅。下面就是解决方案:
自定义一个ScrollView
public class MyScrollView extends ScrollView {
private GestureDetector mGestureDetector;
View.OnTouchListener mGestureListener;
public MyScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
mGestureDetector = new GestureDetector(context, new YScrollDetector());
setFadingEdgeLength(0);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return super.onInterceptTouchEvent(ev) && mGestureDetector.onTouchEvent(ev);
}
// Return false if we're scrolling in the x direction
class YScrollDetector extends SimpleOnGestureListener {
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
if (Math.abs(distanceY) > Math.abs(distanceX)) {
return true;
}
return false;
}
}
}
上面代码中onInterceptTouchEvent方法是关键,重写这个方法使如果ScrollView有touch事件时不被拦截,这样只要ScrollView有touch事件优先处理,这样就保证了滑动的流畅。
之后就在自己的xml布局文件里用MyScrollView代替ScrollView来布局就ok了。如:
<com.boohee.widgets.MyScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/main_bg"
android:layout_marginTop="@dimen/default_shadow_margin" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="180dp" >
<android.support.v4.view.ViewPager
android:id="@+id/vp_top_show"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<LinearLayout
android:id="@+id/dot_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:gravity="center_horizontal"
android:orientation="horizontal"
android:padding="10dp" >
</LinearLayout>
</RelativeLayout>
<WebView
android:id="@+id/wv_show"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layerType="software"
android:scrollbars="none" />
</LinearLayout>
</com.boohee.widgets.MyScrollView>
相关推荐
以上就是关于在Android中解决ScrollView嵌套Webview中包含iframe显示问题的一些关键知识点。通过合理利用NestedScrollView、自定义滚动监听和JavaScript交互,可以有效地改善用户体验,提供流畅的滚动效果。在实际...
解决ScrollView嵌套问题有几种策略: 1. **使用NestedScrollView**:Android Support Library提供了一个名为NestedScrollView的类,它是ScrollView的一个优化版本,特别设计用于处理嵌套滚动。NestedScrollView支持...
这个项目名为"MoreScrollDemo",旨在实现一个复杂的滚动布局,它涉及到ScrollView的多层嵌套,以及WebView和ListView的集成。让我们深入探讨如何实现这样的功能。 首先,ScrollView是Android中的一个视图容器,允许...
但在本项目中,为了实现复杂布局,可能有ScrollView嵌套ScrollView的情况,需要通过编程技巧解决滚动冲突,确保每个子组件的滚动行为正常。 3. WebView: WebView是Android系统提供的一个用于显示网页内容的组件。...
然而,当ScrollView嵌套RecyclerView时,可能会遇到一些常见问题,如RecycleView的高度不适配导致无法正确显示,或是滑动体验不佳。这些问题的出现主要是由于两者的滚动机制冲突以及默认布局管理器的设置。 首先,...
在Android开发中,ScrollView和ListView都是非常常见的视图组件。ScrollView是一个可以包含多个子视图,并允许用户滚动查看所有内容的容器。而ListView则用于显示大量的数据集,通常以垂直列表的形式展示,支持滚动...
当在ViewPager中嵌套使用WebView时,可能会遇到一些需要注意的问题。本文将详细讲解在Android中使用ViewPager与WebView结合时的注意事项。 首先,我们要了解WebView的基本用法。在XML布局文件中,WebView的`layout_...
在Android开发中,ScrollView和WebView是两种常用的布局组件。ScrollView是一个可以包含多个子视图并允许用户滚动查看它们的容器,而WebView则用于加载和显示HTML内容,包括网页、富文本等。当在一个布局中同时使用...
2. **嵌套滚动**:需要注意的是,如果ScrollView的子视图中包含了已具有滚动功能的控件(如HorizontalScrollView,ListView,GridView,WebView等),可能会导致滚动冲突。在这种情况下,需要正确配置嵌套滚动行为,...
可以在Webview中添加javascript接口,使用javascript来重载Webview高度。 在使用Webview时,需要注意一个问题,即Webview的高度需要被正确地设置。如果Webview的高度不被正确地设置,将导致Webview只显示很小的一...
但是android的webview默认支持的功能非常弱,很多地方都是需要自定义的,才能达到我们想要的效果。并且webview在不同的版本会有不同程度的bug。下面小编把webview经常出现的问题给大家整理如下: 1.为WebView自定义...
在做安卓商城项目时,产品经理老是拿京东和淘宝做样板,然后,就有了这个demo,实现在商品详情页上拉显示详情,主要技术就是处理ScrollView嵌套ScrollView或WebView时触摸、滑动事件的交互处理
本来感觉实现起来挺简单的,我打算的实现方式是使用scrollview嵌套recyclerview、webview、scrollview。但是一旦牵涉到滑动的嵌套就难免会发生嵌套之后滑动事件的冲突。这种实现的主要难点就是处理滑动事件的冲突...
2. **嵌套滚动**:在ScrollView中嵌套其他可滚动的视图(如HorizontalScrollView、WebView等)时,可能会出现滚动冲突。为解决这个问题,可以使用NestedScrollView,它支持嵌套滚动,并且是Android Design Support ...
RecyclerView滑动固定/悬停/折叠分组列表标题,NestScrollView折叠布局,解决和RecyclerView的滑动冲突, 自定义View(柱状直方图、金融收益图、无线轮播图、带Icon的TabView),WebView预加载,主流首页框架的多种...
但需要注意,由于ScrollView本身已经实现了滚动功能,如果嵌套了其他的可滚动视图(如HorizontalScrollView、ListView、WebView),可能会导致冲突,需要特别处理。一般情况下,不推荐在一个ScrollView中嵌套另一个...
3. **嵌套滚动**:当ScrollView内嵌套了其他可以滚动的组件,如NestedScrollView、HorizontalScrollView或WebView等,需要处理好嵌套滚动的交互。Android 5.0(API 21)引入了NestedScrolling框架,使得这些组件能更...
比如ScrollView嵌套ListView,或者是ScrollView嵌套自己 这里先看一张效果图 上图是在购物软件上常见的上拉查看图文详情,关于这中动画效果的实现,其实实现整体的效果,办法是有很多的,网上有很多相关的例子,...