@RitcheeQinG
2020-09-07T02:09:26.000000Z
字数 944
阅读 324
Android
众所周知,安卓开发上最不缺奇奇怪怪的需求,有人希望首页Tab + VP可以滑动,有人又希望不能滑动
可以滑动不用多说了,那么不能滑动怎么实现呢?
重写 onInterceptTouchEvent()
返回false即可禁用滑动
不过这么写了可能还有部分情况仍可滑动
这可能是因为child没有焦点导致的
给child设置 focusable = true
和 clickable = true
即可。
/**
* 理论上这个接口肯定应该有,
* 因为你未来肯定不止需要设置这一个东西不可滚动,
* 等到什么 NoScrollRecyclerView,NoScrollViewPager2出来,
* 都得实现这个接口。
*/
public interface IScrollable {
void setCanScroll(boolean canScroll);
boolean canScroll();
}
public class NoScrollViewPager extends ViewPager {
private boolean canScroll = false;
public NoScrollViewPager(@NonNull Context context) {
super(context);
}
public NoScrollViewPager(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return canScroll ? super.onInterceptTouchEvent(ev) : canScroll;
}
@Override
public void setCurrentItem(int item) {
super.setCurrentItem(item, false);
}
@Override
public void setCanScroll(boolean canScroll) {
this.canScroll = canScroll;
}
@Override
public boolean canScroll() {
return canScroll;
}
}