• 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 }

      上几张效果图:
     

     

  • 相关阅读:
    电感
    电容
    电阻
    函数异常规格说明
    异常处理深度解析
    自定义内存管理
    单例类模板
    数组类模板
    数组类模板
    类模板深度剖析
  • 原文地址:https://www.cnblogs.com/phj981805903/p/3246214.html
Copyright © 2020-2023  润新知