Android。仅当ScrollView可滚动时才显示滚动条

问题描述 投票:0回答:1

是否有一种简单的方法可以使ScrollView中的滚动条仅在视图可滚动时可见?

我知道可以通过比较ScrollView和其中的ViewGroup的高度,然后调用ScrollView.setScrollbarFadingEnabled(false);来实现但是这会产生很多开销,我觉得应该有一个更简单,更干净的方法。

android android-scrollview
1个回答
0
投票

使用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的干净解决方案,没有比这更简单的方法。

© www.soinside.com 2019 - 2024. All rights reserved.