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();
本文介绍如何通过重写onTouchEvent方法来禁用ViewPager的滑动功能,并提供了一个示例代码。此外,还讲解了如何在包含SlidingMenu的布局中设置侧边栏的滑动功能,确保在使用ViewPager时各页面侧边栏开关能够正常工作。
1127

被折叠的 条评论
为什么被折叠?



