@RitcheeQinG
2020-09-07T02:09:26.000000Z
字数 944
阅读 383
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);}@Overridepublic boolean onInterceptTouchEvent(MotionEvent ev) {return canScroll ? super.onInterceptTouchEvent(ev) : canScroll;}@Overridepublic void setCurrentItem(int item) {super.setCurrentItem(item, false);}@Overridepublic void setCanScroll(boolean canScroll) {this.canScroll = canScroll;}@Overridepublic boolean canScroll() {return canScroll;}}