Android View.Can在API 11上垂直滚动
有没有一种方法可以在API11上使用类似于“View.CanScrollVertical”的东西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
谢谢。因此,实现方法很简单:
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);
}
}