有没有办法在 API 11 上使用类似于“View.canScrollVertically”的东西?
http://developer.android.com/reference/android/view/View.html#canScrollVertically(int)
谢谢。
最佳答案
所以,实现很简单:
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;
}
}
因此您可以轻松地将其复制到您的代码中;但是,computeX()
方法受到保护。这里的一种解决方案是子类化 View
并提供您自己的实现:
public class CustomView extends View {
public CustomView(Context context) {
super(context);
}
public CustomView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
public boolean compatCanScrollVertically(int direction) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
return canScrollVertically(direction);
} else {
// TODO Remove when minSdkVersion >= 14
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;
}
}
}
}
关于android - API 11 上的 View.canScrollVertically,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29504293/