核心重写onTouchEvent和onInterceptTouchEvent
自定义ViewPager
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.viewpager.widget.ViewPager;
public class MyViewPager extends ViewPager {
private static final String TAG = "yunlong";
private static boolean noScroll ;
public void setNoScroll(boolean noScroll) {
Log.d(TAG, "setNoScroll: "+noScroll);
this.noScroll = noScroll;
}
public MyViewPager(@NonNull Context context) {
super(context);
}
public MyViewPager(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
@Override
public void scrollTo(int x, int y) {
super.scrollTo(x, y);
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
Log.d(TAG, "onTouchEvent: ======="+noScroll);
if (noScroll){
return false;
}else {
return super.onTouchEvent(ev);
}
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
Log.d(TAG, "onInterceptTouchEvent: ======="+noScroll);
if (noScroll){
return false;
}else {
return super.onInterceptTouchEvent(ev);
}
}
@Override
public void setCurrentItem(int item, boolean smoothScroll) {
super.setCurrentItem(item, smoothScroll);
}
@Override
public void setCurrentItem(int item) {
super.setCurrentItem(item);
}
}
调用
MyViewPager myViewPager=new MyViewPager(this);
myViewPager.setNoScroll(false);
讨论[上述代码中 private static boolean noScroll]去掉static还能满足需求吗?