能搜索到这篇博客的基本了解过SlidingMenu和PagerSlidingTabStrip的了吧,
SlidingMenu是用来完成侧滑视图的实现,PagerSlidingTabStrip是用来实现旧版微信主界面页面导航的功能。如果两个一起用,就会有滑动冲突,下面是我解决这个问题的方案。
修改PagerSlidingTabStrip源代码里面的onPageScrolled( )方法
* 关键思想是,滑动的时候,在
PagerSlidingTabStrip判断何时让sliding有效,何时让sliding失效
* 注意一下的
红色
字体
通过
addIgnoredView(view)和removeIgnoredView(view)来控制slidingmenu对窗口的滑动监听
我的
PagerSlidingTabStrip一共有3页,对应下面selectedPosition == 1,2,3。
修改如下
@Override
public void onPageScrolled(int position, float positionOffset,
int positionOffsetPixels)
{
currentPosition = position;
currentPositionOffset = positionOffset;
updateTabStyles();
scrollToChild(position, (int) (positionOffset * tabsContainer
.getChildAt(position).getWidth()));
invalidate();
if(selectedPosition == 2)
//
selectedPosition是保存当时view显示的第几张fragment的int类型数据,根据它来调
// 整我们的sliding何时有效,何时失效,从而达到目的
// FragmentMyInfo是viewPager里面的中间那一页
{
//我们的slidingmenu(即sm)以(static声明)定义在Main(extends Activity)里面。
//Main.sm.addIgnoredView(FragmentMyInfo.view);
}
if(selectedPosition == 1)
{
Main.sm.addIgnoredView(FragmentFindHabit.view);
}
if(selectedPosition == 0)
{
Main.sm.removeIgnoredView(FragmentFindHabit.view);
Main.sm.removeIgnoredView(FragmentMyInfo.view);
}
if (delegatePageListener != null)
{
delegatePageListener.onPageScrolled(position, positionOffset,
positionOffsetPixels);
}
}