可以动态控制左右滑动的ViewPager
禁止ViewPager左右滑动
package com.geaosu.test.act;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
/*============================= 用法 ===============================
=============================== 用法 ===============================
=============================== 用法 ===============================
布局:
<ViewPagerNoScroll
android:id="@+id/mViewPager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
代码:
private ArrayList<Fragment> mFragments = new ArrayList<>();
private ViewPagerNoScroll mViewPager;
// Fragment
mFragments.add(CommonContactsFragment.getInstance());
mFragments.add(MyUnitContactsFragment.getInstance());
mFragments.add(AllContactsFragment.getInstance());
// ViewPager
mViewPager = findViewById(R.id.mViewPager);
mViewPager.setCanScroll(false); // 设置是否可以左右滑动
mViewPager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
数据适配器
private class MyPagerAdapter extends FragmentPagerAdapter {
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return mFragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
return mTitles[position];
}
@Override
public Fragment getItem(int position) {
return mFragments.get(position);
}
}
=============================== 用法 ===============================
=============================== 用法 ===============================
=============================== 用法 ===============================*/
/**
* 可以动态控制左右滑动的ViewPager
*/
public class ViewPagerNoScroll extends ViewPager {
private boolean mCanScroll = false;
public ViewPagerNoScroll(@NonNull Context context) {
super(context);
}
public ViewPagerNoScroll(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
/**
* @param canScroll true 可以左右滑动, false 禁止作用滑动
*/
public void setCanScroll(boolean canScroll) {
this.mCanScroll = canScroll;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return mCanScroll;
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
return mCanScroll;
}
}