/**
* 檢測一個 View 在給定的方向(up or down)能否豎直滑動
*
* @param 調(diào)用該方法的 view
* @param 負(fù)數(shù)表示檢測上滑携添,正數(shù)表示下滑
* 返回 true 表示能在指定的方向滑動袍睡,false 反之
*/
public static boolean canScrollVertically(View v, int direction) {
return IMPL.canScrollVertically(v, direction);
}
使用場景
在開源項目 android-Ultra-Pull-To-Refresh 中就需要對 PtrFrameLayout
中的 Content
進(jìn)行檢測,判斷 Content
是否能在********豎直方向********上滾動艺玲。
public static boolean canChildScrollUp(View view) {
// 如果當(dāng)前版本小于 14括蝠,那就得自己背鍋
if (android.os.Build.VERSION.SDK_INT < 14) {
// 這里給出了如果當(dāng)前 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);
}
}