在项目开发中有很多的场景要用到不可滚动的ViewPager。
管理:这个左右滑动的,能不能把滑动手势去掉?
开发:为什么要去掉,滑动的不好么?
管理:我想用户只能点上面的tab栏进行切换?
开发:好。
那么就会用到我们的自定义组件了,下面就让我们来手动撸一个把。
/**
* 不可滚动的滑动视图
* 继承自ViewPager
* 实现自定义
*/
public class NoScrollViewPager extends ViewPager {
/**
* 默认是可以进行滑动的
*/
private boolean isNoScroll = false;
/**
* 复写构造方法
*/
public NoScrollViewPager(Context context) {
super(context);
}
public NoScrollViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (isNoScroll) {
return false;
} else {
return super.onTouchEvent(event);
}
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
if (isNoScroll) {
return false;
} else {
return super.onInterceptTouchEvent(event);
}
}
@Override
public void setCurrentItem(int item, boolean smoothScroll) {
super.setCurrentItem(item, smoothScroll);
}
@Override
public void setCurrentItem(int item) {
super.setCurrentItem(item);
}
@Override
public void scrollTo(int x, int y) {
super.scrollTo(x, y);
}
public void setNoScroll(boolean isNoScroll) {
this.isNoScroll = isNoScroll;
}
}
使用方法更是简单
activity_no_scroll_layout.xml
<com.example.test.NoScrollViewPager
android:id="@+id/noScrollViewPager"
android:layout_width="match_parent"
<!-- 去掉滑动模式 -->
android:overScrollMode="never"
android:layout_height="match_parent" />
在代码中进行设置
noScrollViewPager.setNoScroll(true);