Demo1:
ViewPager 禁用滑动:
重新定义一个View继承ViewPager重写onTouchEvent的事件:
public boolean onTouchEvent(MotionEvent arg0) {
// TODO Auto-generated method stub
return false; //这个就能禁止ViewPager本身的滑动。
}
Demo2:
SlidingMenu侧边栏的滑动, 在每个子pager中,实现该方法。 ViewPager加载多页面的机制,PagerAdpater加载数据时会使侧边栏开关失效。
public void setSlidingMenuEnable(boolean enable) {
MainActivity mainUi = (MainActivity) mActivity; // 这里的Activity就是MainActivity;
SlidingMenu slidingMenu = mainUi.getSlidingMenu(); // 得到SldingMenu对象。
// 以用来控制是否能左划。
if (enable) {
// 表示SlidingMenu能滑动。
slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); // 表示能滑动。
} else {
slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE); // 表示不能滑动。
}
解决:
监听ViewPager页面改变,当选中那个页面就加载哪个页面。 在PagerAdpater中就不要再加载数据了。
。
mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override //页面选中 arg0就是被选中的页面。
public void onPageSelected(int arg0) {
mPagerList.get(arg0).initData(); //当选中那个页面时加载那个页面的数据。这样各自的打开侧边栏的开关都能正常工作。
}
@Override //页面滑动。
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override //滑动状态改变时,
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
}); //这个是页面改变时的监听。默认刚开始没有需手动加载
mPagerList.get(0).initData();