Android 自定义ViewPager 禁止滑动
ViewPager默认是可以手动切换的,实现自动切换,但是部分需求,我们是需要禁止ViewPager手动切换的, 这个时候就需要自定义ViewPager了,其实也很简单,原理就是拦截触摸事件,让ViewPager不处理onTouch事件,直接交给他的子控件去处理就行。具体代码如下:
1.首先创建CustomViewPager 继承ViewPager
/**
* @Author: Su
* @Date: 2022/11/30
* @Description:
*/
public class CustomViewPager extends ViewPager {
private boolean isCanScroll = true;
public CustomViewPager(Context context) {
super(context);
}
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void setScanScroll(boolean isCanScroll){
this.isCanScroll = isCanScroll;
}
@Override
public void scrollTo(int x, int y){
if (isCanScroll){
super.scrollTo(x, y);
}
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return false;
}
}
2.在xml文件中添加自定义CustomViewPager
<com.***.***.CustomViewPager
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/tab_layout"
android:id="@+id/viewpager"></com.***.***.CustomViewPager>
3.在Activity中写入OnTouchListener
//禁止滑动切换
viewPager.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return true;
}
});