禁止viewpager左右滑动
2020-09-04 本文已影响0人
因为我的心
一、前言:
现在很多app,首页不允许滑动切换(因为页面加载吧),但是又用viewpage来管理frgament.因为方便嘛。
二、使用:
1、重写ViewPager
package com.example.xinenhuadaka.view;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import androidx.viewpager.widget.ViewPager;
//禁止左右滑动的viewpager
public 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);
}
}
2、调用
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) {
}
});
3、总结
当scrollTo方法中加入if判断时
viewpager.setNoScroll(true);//允许滑动
//设置当前点击的Tab所对应的页面
viewpager.setCurrentItem(position, false);//切换页面
viewpager.setNoScroll(false);//禁止滑动
转载:https://blog.csdn.net/qq_41985689/article/details/107530565