SwipeRefreshLayout會與本身內部的一些組件致使滑動衝突。java
SwipeRefreshLayout與其中包含的WebView滑動衝突android
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文件web
<?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);