【问题标题】:Swiping the view pager fragment should not move the tabs滑动视图寻呼机片段不应移动选项卡
【发布时间】:2017-10-04 15:34:26
【问题描述】:

我的程序有一个布尔变量名称“isCorrect”。我想,当 isCorrect 为 false 时,用户应该无法打开任何其他选项卡。 (通过滑动或选择选项卡)。我尝试通过以下给定逻辑执行此操作,但这会导致应用程序挂起。

final boolean isCorrect=false;

tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {

                if(!isCorrect){
                    if(tab.getPosition()==1){
                        mViewPager.setCurrentItem(0);
                    }
                }else{
                   mViewPager.setCurrentItem(1);
                }

            }

【问题讨论】:

    标签: android android-fragments android-tablayout


    【解决方案1】:

    定义一个自定义 ViewPager 子类。该类继承自 ViewPager 并包含一个名为 setSwipeable 的新方法,用于控制是否启用滑动事件。确保更改布局文件。

    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 onTouchEvent(MotionEvent event) {
            if (this.swipeable) {
                return super.onTouchEvent(event);
            }
    
            return false;
        }
    
        @Override
        public boolean onInterceptTouchEvent(MotionEvent event) {
            if (this.swipeable) {
                return super.onInterceptTouchEvent(event);
            }
    
            return false;
        }
    
        public void setSwipeable(boolean swipeable) {
            this.swipeable = swipeable;
        }
    }
    

    当标志为假时禁用滑动。

     if (!flag) {
            mViewPager.setSwipeable(false);
        } else {
            mViewPager.setSwipeable(true);
        }
    

    【讨论】:

    • Zohra Khan 你很棒,但它不会按照我的要求工作。只有当用户在屏幕上滑动时,才会识别标志的值。那么它是如何工作的,请你再解释一下。
    • @Dosti 如果你能解释一下问题场景,我可以提供更多帮助。
    猜你喜欢
    • 1970-01-01
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多