将ViewPager中内嵌的ViewPager设置一个setOnTouchListener事件,记录是否被触摸状态
viewPaper.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
if (MotionEvent.ACTION_DOWN == action) {
isTouch = true;
} else if (MotionEvent.ACTION_OUTSIDE == action
|| action == MotionEvent.ACTION_UP) {
isTouch = false;
}
return false;
}
});
覆盖dispatchTouchEvent分配两个ViewPager的触摸事件。
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (mainViewFragment.isTouch()) {
ViewPager viewPaper = mainViewFragment.getViewPaper();
return viewPaper.dispatchTouchEvent(ev);
}
return super.dispatchTouchEvent(ev);
}
使用Fragment适配器,需要继承FragmentActivity类。
viewsAdapter = new FragmentViewsAdapter(getSupportFragmentManager());
mPager.setAdapter(viewsAdapter);
下面适配器代码中的fragList是一个ArrayList<Fragment>集合,将集合中的Fragment作为一个页面来显示在ViewPager中。
static class FragmentViewsAdapter extends FragmentPagerAdapter {
public FragmentViewsAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return fragList.size();
}
@Override
public Fragment getItem(int position) {
return fragList.get(position);
}
}
创建一个类继承Fragment类,需要覆盖onCreateView方法。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
layout = inflater.inflate(R.layout.main_view, null);
return layout;
}
源码地址:http://download.youkuaiyun.com/detail/aaren_jiang/5207881
作者:黑卡米 原文地址:http://blog.youkuaiyun.com/aaren_jiang/article/details/8743517