protected View findScrollableViewInternal(View content, boolean selfable) { View scrollableView = null; Queue<View> views = new LinkedBlockingQueue<>(Collections.singletonList(content)); while (!views.isEmpty() && scrollableView == null) { View view = views.poll(); if (view != null) { if ((selfable || view != content) && (view instanceof AbsListView || view instanceof ScrollView || view instanceof ScrollingView || view instanceof NestedScrollingChild || view instanceof NestedScrollingParent || view instanceof WebView || view instanceof ViewPager)) { scrollableView = view; } else if (view instanceof ViewGroup) { ViewGroup group = (ViewGroup) view; for (int j = 0; j < group.getChildCount(); j++) { views.add(group.getChildAt(j)); } } } } return scrollableView; }
@Override public void setPrimaryItem(ViewGroup container, int position, Object object) { super.setPrimaryItem(container, position, object); if (object instanceof View) { mScrollableView = ((View) object); } else if (object instanceof Fragment) { mScrollableView = ((Fragment) object).getView(); } if (mScrollableView != null) { mScrollableView = findScrollableViewInternal(mScrollableView, true); if (mScrollableView instanceof NestedScrollingParent && !(mScrollableView instanceof NestedScrollingChild)) { mScrollableView = findScrollableViewInternal(mScrollableView, false); } } }
protected void findScrollableView(View content, RefreshKernel kernel) { mScrollableView = null; while (mScrollableView == null || (mScrollableView instanceof NestedScrollingParent && !(mScrollableView instanceof NestedScrollingChild))) { content = findScrollableViewInternal(content, mScrollableView == null); if (content == mScrollableView) { break; } try {//try 不能删除,不然会出现兼容性问题 if (content instanceof CoordinatorLayout) { kernel.getRefreshLayout().setEnableNestedScroll(false); wrapperCoordinatorLayout(((CoordinatorLayout) content), kernel.getRefreshLayout()); } } catch (Throwable ignored) { } mScrollableView = content; } }
private View findScrollableViewInternal(View content, boolean selfable) { View scrollableView = null; Queue<View> views = new LinkedBlockingQueue<>(Collections.singletonList(content)); while (!views.isEmpty() && scrollableView == null) { View view = views.poll(); if (view != null) { if ((selfable || view != content) && (view instanceof AbsListView || view instanceof ScrollView || view instanceof ScrollingView || view instanceof NestedScrollingChild || view instanceof NestedScrollingParent || view instanceof WebView || view instanceof ViewPager)) { scrollableView = view; } else if (view instanceof ViewGroup) { ViewGroup group = (ViewGroup) view; for (int j = 0; j < group.getChildCount(); j++) { views.add(group.getChildAt(j)); } } } } return scrollableView; }
protected void findScrollableView(View content, RefreshKernel kernel) { mScrollableView = null; while (mScrollableView == null || (mScrollableView instanceof NestedScrollingParent && !(mScrollableView instanceof NestedScrollingChild))) { content = findScrollableViewInternal(content, mScrollableView == null); if (content == mScrollableView) { break; } try {//try 不能删除,不然会出现兼容性问题 if (content instanceof CoordinatorLayout) { kernel.getRefreshLayout().setEnableNestedScroll(false); wrapperCoordinatorLayout(((ViewGroup) content), kernel.getRefreshLayout()); } } catch (Throwable ignored) { } mScrollableView = content; } }
protected boolean isScrollableView(View view) { return view instanceof AbsListView || view instanceof ScrollView || view instanceof ScrollingView || view instanceof NestedScrollingChild || view instanceof NestedScrollingParent || view instanceof WebView || view instanceof ViewPager; }
private void findScrollableView(View content) { mScrollableView = findScrollableViewInternal(content, true); if (mScrollableView instanceof NestedScrollingParent && !(mScrollableView instanceof NestedScrollingChild)) { mScrollableView = findScrollableViewInternal(mScrollableView, false); } if (mScrollableView instanceof ViewPager) { wrapperViewPager((ViewPager) this.mScrollableView); } if (mScrollableView == null) { mScrollableView = content; } }