/** * @param direction Negative to check scrolling up, positive to check scrolling down. * @return true if need dispatch touch event to child view,otherwise */ private boolean supportScrollInView(int direction) { View view = getChildAt(whichCardOnTouch); if (view instanceof ViewGroup) { View childView = findTopChildUnder((ViewGroup) view, firstDownX, firstDownY); if (childView == null) return false; if (childView instanceof AbsListView) { AbsListView absListView = (AbsListView) childView; if (Build.VERSION.SDK_INT >= 19) { return absListView.canScrollList(direction); } else { return absListViewCanScrollList(absListView, direction); } } else if (childView instanceof ScrollView) { ScrollView scrollView = (ScrollView) childView; if (Build.VERSION.SDK_INT >= 14) { return scrollView.canScrollVertically(direction); } else { return scrollViewCanScrollVertically(scrollView, direction); } } } return false; }