zoukankan      html  css  js  c++  java
  • Android ViewPager 里有子ViewPager的事件冲突

      在Android应用中有时候要用到类似网易新闻左右滑动页面且页面里又有左右滑动的图片功能,我不知道网易是怎么实现的,本人的做法是外面的BaseFragmentActivity布局就是TabViewPager,布局代码:

     1 <com.viewpagerindicator.TabPageIndicator
     2             android:id="@+id/news_category_page_indicator"
     3             style="@style/StyledIndicators1"
     4             android:layout_width="fill_parent"
     5             android:layout_height="wrap_content"
     6             android:layout_weight="0"
     7             android:background="#ffffffff" />
     8 
     9         <com.aim.maestandard.widget.CustomViewPager
    10             android:id="@+id/news_category_page_viewpager"
    11             android:layout_width="match_parent"
    12             android:layout_height="wrap_content"
    13             android:layout_weight="1" />

      然后调用viewpager的子view是一个Fragment,碎片里的布局有ViewPager来显示多张图片,
      直接调用viewpager时,父ViewPager和子ViewPager的事件有冲突。解决方法是冲定义外面的ViewPager,具体代码:

     1 public class CustomViewPager extends ViewPager {
     2 
     3     public CustomViewPager(Context context, AttributeSet attrs) {
     4         super(context, attrs);
     5     }
     6 
     7     @Override
     8     protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) {
     9         Log.i("info", String.valueOf(dx) + "--" + String.valueOf(x));
    10         if (v != this && v instanceof GalleryViewPager) {
    11             final GalleryViewPager viewPager = (GalleryViewPager) v;
    12             int totalCount = viewPager.getAdapter().getCount();
    13             Log.i("info", String.valueOf(viewPager.CurrentPosition)
    14                     + "==== totalcount:" + String.valueOf(totalCount));
    15             if (dx > 0) {// left sliding
    16                 if (viewPager.CurrentPosition == 0) {
    17                     return false;
    18                 }
    19             } else {// right sliding
    20                 if (viewPager.CurrentPosition + 1 >= totalCount) {
    21                     return false;
    22                 }
    23             }
    24             return true;
    25         }
    26 
    27         return super.canScroll(v, checkV, dx, x, y);
    28     }
    29 }

      上几张效果图:
     

     

  • 相关阅读:
    window.onload和document.ready/jquery页面加载事件等的区别
    JAVA面试题大全
    BIO NIO AIO的知识扫盲
    类的加载过程详细解释
    nginx的Rewrite和其他相关配置
    【微服务架构设计】DDD
    【重构】
    【多线程】Lock接口与其实现类
    【三方件】汇总
    【SpringBoot-SpringSecurity】安全响应头+防攻击 ~~ TODO
  • 原文地址:https://www.cnblogs.com/phj981805903/p/3246214.html
Copyright © 2011-2022 走看看