zhpanvip 4 gadi atpakaļ
vecāks
revīzija
44111cf155

+ 3 - 2
app/src/main/java/com/example/zhpan/circleviewpager/fragment/HomeFragment.java

@@ -133,6 +133,7 @@ public class HomeFragment extends BaseFragment {
                         article.setPagers(getPicList(3));
                         articleList.add(4, article);
                         articleAdapter.setData(articleList);
+                        recyclerView.getAdapter().notifyDataSetChanged();
                         if (response.getDataBeanList().size() > 0) {
                             mRlIndicator.setVisibility(View.VISIBLE);
                         }
@@ -165,7 +166,8 @@ public class HomeFragment extends BaseFragment {
                 .setInterval(3000)
                 .setIndicatorGravity(IndicatorGravity.END)
                 .setIndicatorSliderRadius(getResources().getDimensionPixelSize(R.dimen.dp_3))
-                .setIndicatorView(mIndicatorView)// 这里为了设置标题故用了自定义Indicator,如果无需标题则没必要添加此行代码
+                .disallowInterceptTouchEvent(true)
+                .setIndicatorView(mIndicatorView)   // 这里为了设置标题故用了自定义Indicator,如果无需标题则没必要添加此行代码
                 .setIndicatorSliderColor(getColor(R.color.red_normal_color), getColor(R.color.red_checked_color))
                 .setAdapter(homeAdapter)
                 .registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@@ -177,7 +179,6 @@ public class HomeFragment extends BaseFragment {
                     }
                 })
                 .setOnPageClickListener(this::onPageClicked).create();
-        mViewPagerHorizontal.disallowInterceptTouchEvent(true);
         mViewPagerVertical
                 .setAutoPlay(true)
                 .setScrollDuration(500)

+ 8 - 6
bannerview/src/main/java/com/zhpan/bannerview/BannerViewPager.java

@@ -89,6 +89,9 @@ public class BannerViewPager<T, VH extends BaseViewHolder<T>> extends RelativeLa
 
     private ViewPager2.PageTransformer mDefaultPageTransformer;
 
+    private boolean disallowIntercept;
+
+
     private ViewPager2.OnPageChangeCallback mOnPageChangeCallback = new ViewPager2.OnPageChangeCallback() {
         @Override
         public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
@@ -194,14 +197,16 @@ public class BannerViewPager<T, VH extends BaseViewHolder<T>> extends RelativeLa
     @Override
     public boolean onInterceptTouchEvent(MotionEvent ev) {
         boolean canIntercept = mViewPager.isUserInputEnabled() || mBannerPagerAdapter != null && mBannerPagerAdapter.getData().size() <= 1;
-        if (!canIntercept || disallowIntercept) {
+        if (!canIntercept) {
             return super.onInterceptTouchEvent(ev);
         }
         switch (ev.getAction()) {
             case MotionEvent.ACTION_DOWN:
                 startX = (int) ev.getX();
                 startY = (int) ev.getY();
-                getParent().requestDisallowInterceptTouchEvent(true);
+                if (!disallowIntercept) {
+                    getParent().requestDisallowInterceptTouchEvent(true);
+                }
                 break;
             case MotionEvent.ACTION_MOVE:
                 int endX = (int) ev.getX();
@@ -226,9 +231,6 @@ public class BannerViewPager<T, VH extends BaseViewHolder<T>> extends RelativeLa
         return super.onInterceptTouchEvent(ev);
     }
 
-    private boolean disallowIntercept;
-
-
     private void onVerticalActionMove(int endY, int disX, int disY) {
         if (disY > disX) {
             if (!isCanLoop()) {
@@ -954,7 +956,7 @@ public class BannerViewPager<T, VH extends BaseViewHolder<T>> extends RelativeLa
      * 对事件进行了处理导致CoordinatorLayout+CollapsingToolbarLayout的布局中滑动BVP的事件无效。
      * 对于这种情况可以调用该方法来禁止BVP对事件进行拦截。
      *
-     * @param disallowIntercept 是否允许BVP拦截触摸事件
+     * @param disallowIntercept true 禁止BVP拦截事件,false 允许BVP拦截事件
      */
     public BannerViewPager<T, VH> disallowInterceptTouchEvent(boolean disallowIntercept) {
         this.disallowIntercept = disallowIntercept;