Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓只有当ScrollView可滚动时,滚动条才可见_Android_Android Scrollview - Fatal编程技术网

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并调整高度来测试它