如何检查ScrollView是否可滚动

Che*_*eng 9 android

我想知道,如何检查当前ScrollView是否可滚动?看起来,没有公共方法被称为canScrollisScrollableScrollView.

可滚动:您可以在ScrollView中上下移动ViewGroup,当您上下移动滚动条时,滚动条将会显示.因此,如果只有很少的行ScrollView,并且它们可以放入单个屏幕内,ScrollView则不可滚动.

Ste*_*ett 17

您可以做一些小数学计算视图原始高度和内容的高度.如果此高度的差异<0,则视图是可滚动的.

要计算原始高度,可以使用View.getMeasuredHeight().因为ScrollView是一个ViewGroup并且最多只有一个子节点,所以使用ViewGroup.getChildAt(0).getHeight()获取该子节点的高度.

使用ViewTreeObserver获取高度,因为它将在布局/视图更改可见性时被调用,否则高度可能为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
        }
    }
});
Run Code Online (Sandbox Code Playgroud)


cod*_*der 5

scrollView.viewTreeObserver
        .addOnGlobalLayoutListener {

            val isScrollable = scrollView.canScrollVertically(1)
        }
Run Code Online (Sandbox Code Playgroud)