2010-08-31 45 views
27

Tôi có một ScrollView tùy chỉnh (mở rộng android.widget.ScrollView) mà tôi sử dụng trong bố cục của mình. Tôi muốn đo tổng chiều cao của nội dung của scrollview này. getHeight() và getMeasuredHeight() không cho tôi giá trị chính xác (số quá cao).Android: Tổng chiều cao của ScrollView

Thông tin cơ bản: Tôi muốn xác định khoảng cách người dùng đã cuộn. Tôi sử dụng onScrollChanged để có được giá trị X, nhưng tôi cần phải biết một tỷ lệ phần trăm vì vậy tôi sẽ cần tổng chiều cao thanh cuộn.

Cảm ơn rất nhiều! Erik

+0

Hãy xem http://stackoverflow.com/questions/3513594/android-scrollview-setonscrolllistener-like-listview cho một gợi ý – Mikpa

Trả lời

73

Một ScrollView luôn có 1 con. Tất cả những gì bạn cần làm là lấy chiều cao của đứa trẻ để xác định tổng chiều cao:

int totalHeight = scrollView.getChildAt(0).getHeight(); 
+1

tôi xem con trả về 0 ngay cả khi nó cuộn. –

+2

Bạn đã yêu cầu chiều cao của nó ở trênCreate hoặc trước khi nó được đo? Hãy thử nhận được chiều cao sau, xem câu hỏi này: http://stackoverflow.com/questions/7733813/how-can-you-tell-when-a-layout-has-been-drawn – satur9nine

+0

Cảm ơn bạn, đã làm việc :) –

0

Xem nguồn của ScrollView. Thật không may, phương pháp này là riêng tư, nhưng bạn có thể sao chép nó vào mã của riêng bạn. Lưu ý rằng câu trả lời khác không dùng đệm vào tài khoản

private int getScrollRange() { 
    int scrollRange = 0; 
    if (getChildCount() > 0) { 
     View child = getChildAt(0); 
     scrollRange = Math.max(0, 
       child.getHeight() - (getHeight() - mPaddingBottom - mPaddingTop)); 
    } 
    return scrollRange; 
} 
Các vấn đề liên quan