我想知道,如何檢查當前的ScrollView
是否可以滾動?看來,在ScrollView
中沒有公開的方法稱爲canScroll
或isScrollable
。如何檢查ScrollView是否可滾動
可滾動:您可以向上和向下移動ScrollView中的ViewGroup,並且滾動條在上下移動時可見。所以,如果ScrollView
中只有很少的行,並且它們可以放在單個屏幕內,那麼ScrollView
不可滾動。
我想知道,如何檢查當前的ScrollView
是否可以滾動?看來,在ScrollView
中沒有公開的方法稱爲canScroll
或isScrollable
。如何檢查ScrollView是否可滾動
可滾動:您可以向上和向下移動ScrollView中的ViewGroup,並且滾動條在上下移動時可見。所以,如果ScrollView
中只有很少的行,並且它們可以放在單個屏幕內,那麼ScrollView
不可滾動。
你可以做一些小數學計算視圖原始高度和內容的高度。如果這個高度的差值是< 0,則該視圖是可滾動的。
要計算原始高度,您可以使用View.getMeasuredHeight()。 因爲ScrollView是一個ViewGroup並且有最多一個孩子,所以用ViewGroup.getChildAt(0).getHeight()獲得那個孩子的身高;
使用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) {
// scrollable
}
}
});
是否有任何理由使用scrollView.getChildAt(0).getHeight();而不是scrollView.getChildAt(0).getMeasuredHeight(); –
@CheokYanCheng在這種情況下,這種方法沒有區別。正如我測試它的值是相等的。但是,如果您在Java代碼中更改佈局參數,請使用getHeight()來確保正確的值返回。 –
我想我可能失去了一些東西,但它不應該是簡單的檢查,如果
scrollView.getHeight() >= parentView.getMeasuredHeight()
你可能確實需要:scrollView.getChildAt(0).getHeight()
和/或parentView.getHeight()
代替,但這個想法是一樣的。
定義「滾動」 – njzk2
滾動 - 你可以上下移動ScrollView中的ViewGroup,並且當您上下移動滾動條時可以看到。 –
這就是scrollview是關於什麼,我不明白你的問題 – njzk2