Android View.Can在API 11上垂直滚动

Android View.Can在API 11上垂直滚动,android,view,android-recyclerview,Android,View,Android Recyclerview,有没有一种方法可以在API11上使用类似于“View.CanScrollVertical”的东西 谢谢。因此,实现方法很简单: public boolean canScrollVertically(int direction) { final int offset = computeVerticalScrollOffset(); final int range = computeVerticalScrollRange() - computeVerticalScrollExten

有没有一种方法可以在API11上使用类似于“View.CanScrollVertical”的东西


谢谢。

因此,实现方法很简单:

public boolean canScrollVertically(int direction) {
    final int offset = computeVerticalScrollOffset();
    final int range = computeVerticalScrollRange() - computeVerticalScrollExtent();
    if (range == 0) return false;
    if (direction < 0) {
        return offset > 0;
    } else {
        return offset < range - 1;
    }
}

我查看了SwipeRefreshLayout代码,该视图与是否可以在指定方向滚动的视图具有相同的需求

/**
 * @return Whether it is possible for the child view of this layout to
 *         scroll up. Override this if the child view is a custom view.
 */
public boolean canChildScrollUp() {
    if (android.os.Build.VERSION.SDK_INT < 14) {
        if (mTarget instanceof AbsListView) {
            final AbsListView absListView = (AbsListView) mTarget;
            return absListView.getChildCount() > 0
                    && (absListView.getFirstVisiblePosition() > 0 || absListView.getChildAt(0)
                            .getTop() < absListView.getPaddingTop());
        } else {
            return mTarget.getScrollY() > 0;
        }
    } else {
        return ViewCompat.canScrollVertically(mTarget, -1);
    }
}
/**
*@return此布局的子视图是否可以
*向上滚动。如果子视图是自定义视图,则替代此选项。
*/
公共布尔值canChildScrollUp(){
if(android.os.Build.VERSION.SDK_INT<14){
if(AbsListView的mTarget实例){
最终AbsListView AbsListView=(AbsListView)mTarget;
返回absListView.getChildCount()>0
&&(absListView.getFirstVisiblePosition()>0 | | absListView.getChildAt(0)
.getTop()0;
}
}否则{
返回ViewCompat.CanScrollVertical(mTarget,-1);
}
}

向下滚动也使用相同的方式。

ViewCompat.canscrollvertical(recyclerView,-1)
本身似乎是recyclerView的一个方便选项。@android developer它位于v4支持库中。我已经在v10上测试过了,但最好参考文档。请记住,这只是为了回收利用。
/**
 * @return Whether it is possible for the child view of this layout to
 *         scroll up. Override this if the child view is a custom view.
 */
public boolean canChildScrollUp() {
    if (android.os.Build.VERSION.SDK_INT < 14) {
        if (mTarget instanceof AbsListView) {
            final AbsListView absListView = (AbsListView) mTarget;
            return absListView.getChildCount() > 0
                    && (absListView.getFirstVisiblePosition() > 0 || absListView.getChildAt(0)
                            .getTop() < absListView.getPaddingTop());
        } else {
            return mTarget.getScrollY() > 0;
        }
    } else {
        return ViewCompat.canScrollVertically(mTarget, -1);
    }
}