/**
* 检测一个 View 在给定的方向(up or down)能否竖直滑动
*
* @param 调用该方法的 view
* @param 负数表示检测上滑,正数表示下滑
* 返回 true 表示能在指定的方向滑动,false 反之
*/
public static boolean canScrollVertically(View v, int direction) {
return IMPL.canScrollVertically(v, direction);
}
使用场景
在开源项目 android-Ultra-Pull-To-Refresh 中就需要对 PtrFrameLayout
中的 Content
进行检测,判断 Content
是否能在********竖直方向********上滚动。
public static boolean canChildScrollUp(View view) {
// 如果当前版本小于 14,那就得自己背锅
if (android.os.Build.VERSION.SDK_INT < 14) {
// 这里给出了如果当前 view 是 AbsListView 的实例的检测方法
if (view instanceof AbsListView) {
final AbsListView absListView = (AbsListView) view;
return absListView.getChildCount() > 0
&& (absListView.getFirstVisiblePosition() > 0 || absListView.getChildAt(0)
.getTop() < absListView.getPaddingTop());
} else {
return view.getScrollY() > 0;
}
} else {
return view.canScrollVertically(-1);
}
}