android - API 11 上的 View.canScrollVertically

标签 android view android-recyclerview

有没有办法在 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/

相关文章:

java - 如何在 Intellij IDEAS/Android Studio 中制作链接到源代码中特定行的日志?

android - HTC One 手机的 Sencha Touch 2.X 解决方法

android - Eclipse 在 AVD 或真实设备上安装后不启动应用程序

Android 应用范围 View 覆盖 (HUD)

android - 升级到 FirebaseUI 3.0 后无法使用 FirebaseRecyclerOptions 检索数据

java - Stringbuffer 不可达语句

sql-server - 无法使用 SQL Server 中的用户定义函数在 View 上创建索引

ios - 如何将手指拖过 2 个 View 并始终知道它在哪个 View 上

android - 异步图像下载到 StaggeredGridLayout

android - 如何更新嵌套 recyclerview 项目的项目?