代码之家  ›  专栏  ›  技术社区  ›  Sasha Shpota A-Bag

Android:限制用户在ViewPager中滑动屏幕

  •  -2
  • Sasha Shpota A-Bag  · 技术社区  · 7 年前

    我有一个选项卡式活动:用户可以向右或向左滑动来更改屏幕。在某个时刻,我想录制一段音频,当它正在录制时,用户不应该更改屏幕。

    如何限制用户在 ViewPager ?

    可视寻呼机 可视寻呼机 这一切都不可能实现我的愿望)。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Sasha Shpota A-Bag    7 年前

    您可以扩展ViewPager类并使用此代码。

    public class LockableViewPager extends ViewPager {
    
        private boolean swipeable;
    
        public LockableViewPager(Context context) {
            super(context);
        }
    
        public LockableViewPager(Context context, AttributeSet attrs) {
            super(context, attrs);
            this.swipeable = true;
        }
    
        @Override
        public boolean onInterceptTouchEvent(MotionEvent event) {
            return this.swipeable && super.onInterceptTouchEvent(event);
        }
    
        @Override
        public boolean onTouchEvent(MotionEvent event) {
            return this.swipeable && super.onTouchEvent(event);
        }
    
        public void setSwipeable(boolean swipeable) {
            this.swipeable = swipeable;
        }
    }
    

    在你的片段或活动中,你可以直接调用 mViewPager.setSwipeable(false); 使其不可擦拭。

        2
  •  1
  •   Krishna Sharma    7 年前

    创建一个自定义的viewPager,如下所示

    public class CustomViewPager extends ViewPager {
    
        private boolean enabled = true;
    
        public CustomViewPager(Context context, AttributeSet attrs) {
            super(context, attrs);
            enabled = true;
        }
    
        @Override
        public boolean onInterceptTouchEvent(MotionEvent arg0) {
            if (enabled) {
                return super.onInterceptTouchEvent(arg0);
            } else {
                return false;
            }
        }
    
        @Override
        public boolean onTouchEvent(MotionEvent event) {
            if (this.enabled) {
                return super.onTouchEvent(event);
            }
    
            return false;
        }
    
        public void setPagingEnabled(boolean enabled) {
            this.enabled = enabled;
        }
    
    }
    

    然后直接打电话 viewPager.setPagingEnabled(false);