Android 进阶之旅 | View到达顶部及底部边界判断

View到达顶部及底部边界判断

============这个很靠谱
/**
* 判断View是否滑动到顶部
* @param view
* @return
*/
public static boolean isViewReachTopEdge(View view) {
if (view instanceof ViewGroup) {
if (view.canScrollVertically(-1))
return false;
int count = ((ViewGroup)view).getChildCount();
for (int i = 0; i < count; i++) {
if (!isViewReachTopEdge(((ViewGroup)view).getChildAt(i)))
return false;
}
}
if (view.canScrollVertically(-1)) {
return false;
}
return true;
}

/**
 * 判断View是否滑动到底部
 * @param view
 * @return
 */
public static boolean isViewReachBottomEdge(View view) {
    if (view instanceof ViewGroup) {
        if (view.canScrollVertically(1))
            return false;
        int count  = ((ViewGroup)view).getChildCount();
        for (int i = 0; i < count; i++) {
            if (!isViewReachBottomEdge(((ViewGroup)view).getChildAt(i)))
                return false;
        }
    }
    if (view.canScrollVertically(1)) {
        return false;
    }
    return true;
}

系统方法

//-1代表顶部,返回true表示没到顶,还可以滑
//1代表底部,返回true表示没到底部,还可以滑
boolean b = recyclerView.canScrollVertically(-1);
Logger.d(TAG, "-------> ???"+b);

这个在用到recycleview 下来刷新 + 上啦加载的时候,会存在问题(具体问题没查出来,就是一直会返回recyclerView.canScrollVertically(-1) -->false , 最后用到上面哪种方法解决的 )

参考资料: https://blog.csdn.net/xuxingxing002/article/details/53331016
https://www.jianshu.com/p/c138055af5d2 --- 这个里面的方法可以多研究研究
https://blog.csdn.net/zhouwengong/article/details/81738261

你可能感兴趣的:(Android 进阶之旅 | View到达顶部及底部边界判断)