package com.example.xinenhuadaka.view;import android.content.Context;import android.util.AttributeSet;import android.view.MotionEvent;import androidx.viewpager.widget.ViewPager;//禁止左右滑动的viewpagerpublic class NoScrollViewPager extends ViewPager {    private boolean noScroll = true;    public NoScrollViewPager(Context context, AttributeSet attrs) {        super(context, attrs);    }    public NoScrollViewPager(Context context) {        super(context);    }    //调用此方法 参数为false 即可禁止滑动    public void setNoScroll(boolean noScroll) {        this.noScroll = noScroll;    }    @Override    public void scrollTo(int x, int y) {//        if(noScroll){  //加上判断无法用 setCurrentItem 方法切换            super.scrollTo(x, y);//        }    }    @Override    public boolean onTouchEvent(MotionEvent arg0) {        if (!noScroll)            return false;        else            return super.onTouchEvent(arg0);    }    @Override    public boolean onInterceptTouchEvent(MotionEvent arg0) {        if (!noScroll)            return false;        else            return super.onInterceptTouchEvent(arg0);    }    @Override    public void setCurrentItem(int item, boolean smoothScroll) {        super.setCurrentItem(item, smoothScroll);    }    @Override    public void setCurrentItem(int item) {        super.setCurrentItem(item);    }}

调用

mAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) {            @NonNull            @Override            public Fragment getItem(int position) {                return fragmentList.get(position);            }            @Override            public int getCount() {                return fragmentList.size();            }        };        viewpager.setAdapter(mAdapter);        viewpager.setOffscreenPageLimit(fragmentList.size());//保存全部fragment        viewpager.setNoScroll(false);//禁止滑动        viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {            @Override            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {            }            @Override            public void onPageSelected(int position) {//                vp.setCurrentItem(position,false);            }            @Override            public void onPageScrollStateChanged(int state) {            }        });

当scrollTo方法中加入if判断时

viewpager.setNoScroll(true);//允许滑动//设置当前点击的Tab所对应的页面viewpager.setCurrentItem(position, false);//切换页面viewpager.setNoScroll(false);//禁止滑动

亲测有效

更多相关文章

  1. editText禁止键盘弹出
  2. 安卓全局获取Context
  3. Android(安卓)Studio之导入外部so库
  4. 仿Google应用动态隐藏显示状态栏
  5. Identifying Sensors and Sensor Capabilities
  6. android ViewGroup左右滑屏方法2
  7. android测量心率的实现方法
  8. Html容器机制说明
  9. AS:Android数据回传(简单实例源代码)

随机推荐

  1. android 交叉编译工具的设置
  2. android AsyncTask 源码跟踪
  3. android把字符串内容保存到指定路径
  4. android 怎么动态设置button 的style
  5. Android Studio报错:Could not download k
  6. 百度地图在android的使用
  7. android中出现javax.net.ssl.SSLPeerUnve
  8. Android(安卓)上下文菜单实现
  9. 四大组件之一 ----------- BroadcastRece
  10. Android实现记事本功能(26)