是否有一种简单的方法可以使ScrollView
中的滚动条仅在视图可滚动时可见?
我知道可以通过比较ScrollView
和其中的ViewGroup
的高度,然后调用ScrollView.setScrollbarFadingEnabled(false);
来实现但是这会产生很多开销,我觉得应该有一个更简单,更干净的方法。
使用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) {
ScrollView.setVerticalScrollBarEnabled(false);
}
}
});
这是IMO的干净解决方案,没有比这更简单的方法。