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 }

      上几张效果图:
     

     

  • 相关阅读:
    .NET使用DAO.NET实体类模型操作数据库
    .NET连接数据库及基本增删改查
    Struts2超链接
    微信小程序与Java后台的通信
    Java中重载和重写的区别
    Java中Double保留后小数位的几种方法
    北大集训2019游记
    HTML5前端
    软件测试面试题2018
    软件测试笔试题(2018精华篇)
  • 原文地址:https://www.cnblogs.com/phj981805903/p/3246214.html
Copyright © 2011-2022 走看看