Scrollview和listview 与VIewpager冲突问题
package com.dreamlive.widget.view;
import android.content.Context;import android.util.AttributeSet;import android.view.GestureDetector;import android.view.GestureDetector.SimpleOnGestureListener;import android.view.MotionEvent;import android.view.View;import android.widget.ScrollView;/**
* * * 解决ScrollView嵌套ViewPager出现的滑动冲突问题 */public class PagerScrollView extends ScrollView {private boolean canScroll;private GestureDetector mGestureDetector;View.OnTouchListener mGestureListener;@SuppressWarnings("deprecation")public PagerScrollView(Context
context, AttributeSet attrs) {super(context, attrs);mGestureDetector = new GestureDetector(new YScrollDetector());canScroll = true;}@Overridepublic boolean onInterceptTouchEvent(MotionEvent ev) {if (ev.getAction() == MotionEvent.ACTION_UP)canScroll = true;return
super.onInterceptTouchEvent(ev)&& mGestureDetector.onTouchEvent(ev);}class YScrollDetector extends SimpleOnGestureListener {@Overridepublic boolean onScroll(MotionEvent e1, MotionEvent e2,float distanceX, float distanceY) {if (canScroll)if (Math.abs(distanceY)
>= Math.abs(distanceX))canScroll = true;elsecanScroll = false;return canScroll;}}}
package com.dreamlive.widget.view;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ListView;
public class UnSrollableListView extends ListView {
public UnSrollableListView(Context context) {
super(context);
}
public UnSrollableListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public UnSrollableListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}