【问题】
SwipeRefreshLayout会与自己内部的一些组件导致滑动冲突。
【项目中的具体问题】
SwipeRefreshLayout与其中包含的WebView滑动冲突
【具体的解决代码】
public class ScrollSwipeRefreshLayout extends SwipeRefreshLayout {
private ViewGroup viewGroup ;
public ScrollSwipeRefreshLayout(Context context) {
super(context);
}
public ScrollSwipeRefreshLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ViewGroup getViewGroup() {
return viewGroup;
}
public void setViewGroup(ViewGroup viewGroup) {
this.viewGroup = viewGroup;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if(null != viewGroup && viewGroup.getScrollY() > 1){
return false;
}else{
return super.onInterceptTouchEvent(ev);
}
}
}
【项目中的案例】
对应的具体的xml文件
<?xml version="1.0" encoding="utf-8"?>
<com.etu.changzhou.widget.ScrollSwipeRefreshLayout
android:id="@+id/swipe_refresh_layout"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include
android:layout_height="@dimen/d_48"
android:layout_width="match_parent"
layout="@layout/base_title"></include>
<View style="@style/gray_split"></View>
<ImageView
android:id="@+id/net_error"
android:layout_width="@dimen/d_145"
android:layout_height="@dimen/d_177"
android:src="@mipmap/net_error"
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/d_96"
android:visibility="gone"/>
<WebView
android:id="@+id/web_view"
android:cacheColorHint="#00000000"
android:overScrollMode="never"
android:layout_width="match_parent"
android:layout_height="match_parent"></WebView>
</LinearLayout>
</com.etu.changzhou.widget.ScrollSwipeRefreshLayout>
swipeRefreshLayout = (ScrollSwipeRefreshLayout) this.findViewById(R.id.swipe_refresh_layout);
swipeRefreshLayout.setViewGroup(mWebView);
swipeRefreshLayout.setOnRefreshListener(this);
swipeRefreshLayout.setColorSchemeResources(R.color.holo_blue_bright,
R.color.holo_green_light,
R.color.holo_orange_light,
R.color.holo_red_light);