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