下面列出了怎么用android.support.v4.view.NestedScrollingParent的API类实例代码及写法,或者点击链接到github查看源代码。
private void findScrollableView(View content, RefreshKernel kernel) {
mScrollableView = findScrollableViewInternal(content, true);
try {
if (mScrollableView instanceof CoordinatorLayout) {
kernel.getRefreshLayout().setNestedScrollingEnabled(false);
wrapperCoordinatorLayout(((CoordinatorLayout) mScrollableView), kernel.getRefreshLayout());
}
} catch (Throwable e) {//try 不能删除
}
if (mScrollableView instanceof NestedScrollingParent
&& !(mScrollableView instanceof NestedScrollingChild)) {
mScrollableView = findScrollableViewInternal(mScrollableView, false);
}
if (mScrollableView instanceof ViewPager) {
wrapperViewPager((ViewPager) this.mScrollableView);
}
if (mScrollableView == null) {
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;
}
@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);
}
}
}