Android 安卓只有当ScrollView可滚动时,滚动条才可见
是否有一种简单的方法可以让滚动条仅在视图可滚动时才显示在Android 安卓只有当ScrollView可滚动时,滚动条才可见,android,android-scrollview,Android,Android Scrollview,是否有一种简单的方法可以让滚动条仅在视图可滚动时才显示在ScrollView中 我知道可以通过比较ScrollView和其中ViewGroup的高度,然后调用ScrollView.SetScrollBarFadinEnabled(false)来实现这一点 但是它的开销很大,我觉得应该有一种更简单、更干净的方法。使用a来获取高度,因为在布局/视图改变可见性时会调用它,否则高度可能为0 ScrollView scrollView = (ScrollView)findViewById(R.id...)
ScrollView
中
我知道可以通过比较ScrollView
和其中ViewGroup
的高度,然后调用ScrollView.SetScrollBarFadinEnabled(false)来实现这一点代码>
但是它的开销很大,我觉得应该有一种更简单、更干净的方法。使用a来获取高度,因为在布局/视图改变可见性时会调用它,否则高度可能为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);
}
}
});
ScrollView ScrollView=(ScrollView)findViewById(R.id…);
ViewTreeObserver observer=scrollView.getViewTreeObserver();
observer.addOnGlobalLayoutListener(新的OnGlobalLayoutListener(){
@凌驾
公共图书馆{
int viewHeight=scrollView.getMeasuredHeight();
int contentHeight=scrollView.getChildAt(0.getHeight();
if(视图高度-内容高度<0){
ScrollView.setVerticalScrollBarEnabled(false);
}
}
});
这是一个干净的解决方案,没有比这更简单的方法了。使用a获取高度,因为在布局/视图更改可见性时将调用它,否则高度可能为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);
}
}
});
ScrollView ScrollView=(ScrollView)findViewById(R.id…);
ViewTreeObserver observer=scrollView.getViewTreeObserver();
observer.addOnGlobalLayoutListener(新的OnGlobalLayoutListener(){
@凌驾
公共图书馆{
int viewHeight=scrollView.getMeasuredHeight();
int contentHeight=scrollView.getChildAt(0.getHeight();
if(视图高度-内容高度<0){
ScrollView.setVerticalScrollBarEnabled(false);
}
}
});
这是一个干净的解决方案,没有比这更简单的方法了。您描述的是ScrollView的正常行为。如果ScrollView不可滚动,则不会显示滚动条。如果视图不可滚动,即使是android:fadeScrollbars=“false”也不会生效。
可能ScrollView本身的唯一子项太大,无法放入视口(或ScrollView容器)。在您的情况下,ScrollView似乎总是有一个滚动条。您可以将一个简单的文本视图作为子视图放在ScrollView中并调整高度来测试它。您描述的是ScrollView的正常行为。如果ScrollView不可滚动,则不会显示滚动条。如果视图不可滚动,即使是android:fadeScrollbars=“false”也不会生效。
可能ScrollView本身的唯一子项太大,无法放入视口(或ScrollView容器)。在您的情况下,ScrollView似乎总是有一个滚动条。您可以通过将一个简单的文本视图作为子视图放入ScrollView并调整高度来测试它