将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; } });
@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.csdn.net/detail/aaren_jiang/5207881
作者:黑卡米 原文地址:http://blog.csdn.net/aaren_jiang/article/details/8743517