SlidingMenu和PagerSlidingTabStrip滑动冲突的解决方案


能搜索到这篇博客的基本了解过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);
   }
  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值