2013-09-02 19 views
12

Làm cách nào để kiểm tra xem có phải là ScrollView cao hơn màn hình không? Khi nội dung của ScrollView vừa với màn hình, ScrollView không thể cuộn được, khi nội dung vượt quá chiều cao màn hình, nó có thể cuộn được. Làm cách nào để kiểm tra điều kiện của một số ScrollView?Kiểm tra xem ScrollView có cao hơn màn hình/cuộn được không

+0

một scrollview đã không thể được cuộn khi nội dung phù hợp trong màn hình –

+0

đây là hành vi mặc định –

+1

tôi biết đây là hành vi bình thường và hợp lý, tôi muốn biết nếu theres một phương pháp để kiểm tra thời tiết các ScrollView phù hợp với màn hình hoặc excee ds nó. – FWeigl

Trả lời

20

Đây là mã từ scrollview, đó là tư nhân, nhưng có thể được điều chỉnh để được sử dụng bên ngoài của lớp mình

/** 
* @return Returns true this ScrollView can be scrolled 
*/ 
private boolean canScroll() { 
    View child = getChildAt(0); 
    if (child != null) { 
     int childHeight = child.getHeight(); 
     return getHeight() < childHeight + mPaddingTop + mPaddingBottom; 
    } 
    return false; 
} 
5

Một ScrollView luôn có 1 con. Tất cả bạn cần làm là có được chiều cao của đứa trẻ

int scrollViewHeight = scrollView.getChildAt(0).getHeight(); 

và Tính Chiều cao của màn hình của bạn

nếu cả hai đều bình đẳng (hoặc scrollview Chiều cao là hơn) sau đó nó phù hợp trên màn hình của bạn.

+3

đó là nếu scrollview của bạn được bao phủ toàn bộ màn hình. –

+0

@NicolasTyler chỉ toàn bộ chiều cao của màn hình. và nếu scrollview không phải là trên toàn bộ chiều cao của màn hình sau đó bạn sẽ biết kích thước của xem di chuyển của bạn là gì. Tất cả mọi thứ có thể được tính toán, cung cấp cho một số toán học. –

+0

Mặc dù muộn cho điều này, tại sao không phải một cái gì đó như thế này: 'bool childLargerThanParent = scrollView.getChildAt (0) .getHeight()> scrollView.getHeight();'? An toàn hơn và ít hơn _calculations_. – auhmaan

1

Quá trễ, nhưng tôi đang sử dụng đoạn mã sau và có vẻ an toàn hơn cho tôi:

if (view.canScrollVertically(1) || view.canScrollVertically(-1)) { 
    // you code here 
}