欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Fragment+ViewPager 禁止滑动 or 避免Fragment产生复用

程序员文章站 2022-06-15 09:30:00
Fragment+ViewPager 禁止滑动1.创建一个类继承自ViewPager实现至如下代码public class MyVp extends ViewPager { private boolean canscroll=true; public MyVp(@NonNull Context context) { super(context); } public boolean setscrollable(boolean canscroll...

Fragment+ViewPager 禁止滑动

1.创建一个类继承自ViewPager实现至如下代码

public class MyVp extends ViewPager {
    
    private boolean canscroll=true;
    public MyVp(@NonNull Context context) {
        super(context);
    }
    public boolean setscrollable(boolean canscroll){
        this.canscroll=canscroll;
        return canscroll;
    }

    public MyVp(@NonNull Context context, @Nullable AttributeSet attrs) {
            super(context, attrs);

    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        return canscroll&&super.onInterceptTouchEvent(ev);
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        return canscroll&&super.onTouchEvent(ev);
    }


}

2.直接在布局使用自己写的ViewPager

 <com.shopmall.bawei.shopmall1805.adapter.MyVp
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:id="@+id/m_pager"
             >
  </com.shopmall.bawei.shopmall1805.adapter.MyVp>

3.使用时在java代码中加入下面这句话

 mPager.setscrollable(false);

避免Fragment产生复用

1.第一种方式 清除数据源

切换fragment时,清空数据,第二次切换过来重新添加

2.第二种方式 在onCreateView中进行判断

//先声明一个View (private View view);

  if (null != view) {

            ViewGroup parent = (ViewGroup) view.getParent();
            if (null != parent) {
                parent.removeView(view);
            }
        } else {
            view = inflater.inflate(R.layout.fragment_classification, container, false);
            initView(view); // 在initView中控件初始化
        }

本文地址:https://blog.csdn.net/Lee_black_eggs/article/details/110181862

相关标签: Android viewpager