android - 如何检查 ScrollView 是否可滚动

标签 android

我想知道,如何检查当前的ScrollView是否可滚动?看来,ScrollView 中没有名为canScrollisScrollable 的公共(public)方法。

Scrollable :可以上下移动ScrollView内部的ViewGroup,上下移动时滚动条可见。因此,如果 ScrollView 中只有很少的行,并且它们可以容纳在单个屏幕中,则 ScrollView 是不可滚动的。

最佳答案

您可以做一些小数学运算来计算 View 的原始高度和内容的高度。如果此高度差 < 0,则 View 可滚动。

要计算原始高度,您可以使用 View.getMeasuredHeight() . 因为 ScrollView 是一个 ViewGroup 并且最多有一个 child ,所以用 ViewGroup.getChildAt(0).getHeight() 得到那个 child 的高度;

使用 ViewTreeObserver获取高度,因为它会在布局/ View 改变可见性时调用,否则高度可能为 0。

ScrollView scrollView = (ScrollView)findViewById(R.id...);
ViewTreeObserver observer = scrollView.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        int viewHeight = scrollView.getMeasuredHeight();
        int contentHeight = scrollView.getChildAt(0).getHeight();
        if(viewHeight - contentHeight < 0) {
            // scrollable
        }
    }
});

关于android - 如何检查 ScrollView 是否可滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19503573/

相关文章:

java - 是否有将 HTML 转换为纯文本的函数?

java - 当我执行大循环时,应用程序占用过多 RAM

android - Appium 创建 session 失败

java - 亚马逊应用内购买

android - 以编程方式处理事件百分率的有效方法

android - 如何在设计编辑器预览中显示工具栏中的后退箭头?

不支持 Adob​​e Flash 的 Android 2.2 手机

android - 如何在滚动android时固定我的工具栏

android - 如何在 Android 中禁用 RecyclerView 项目?

Android ScrollView 高度不变