我想知道,如何检查当前的ScrollView
是否可滚动?看来,ScrollView
中没有名为canScroll
或isScrollable
的公共(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/