2011-11-23 27 views
7

Tôi muốn nhấn vào một điều khiển trên màn hình và cuộn danh sách ListView cho đến khi một hàng nhất định ở trên cùng của màn hình, một tính năng có vẻ rất dễ dàng trong iOS.smoothScrollToPositionFromTop cho Froyo ListView?

Tôi đã tìm thấy một phương thức như vậy trong API: http://developer.android.com/reference/android/widget/AbsListView.html#smoothScrollToPositionFromTop(int, int) Tuy nhiên, đây là API cấp 11, Tổ ong. Điều đó có nghĩa là điện thoại không thể sử dụng nó cho đến Ice Cream Sandwich, và nó sẽ là một thời gian dài, cho đến khi nó thực tế để thiết lập Ice Cream Sandwich là một yêu cầu tối thiểu để chạy các ứng dụng.

Có cách nào để có cùng chức năng này trong Froyo không?

Trả lời

4

Sử dụng

setSelection (int position) 
+0

Bạn biết đấy, tôi sẽ tuyên thệ nhậm chức tôi đã cố gắng đó và nó không cuộn danh sách. Lo và nhìn, nó nhảy danh sách với hàng chính xác ở phía trên cùng của màn hình, đó là tuyệt vời! Tôi lo ngại về những tác dụng phụ không mong muốn của phương pháp đó, vì nó không được dùng cho mục đích này, và sẽ tốt hơn nếu có một cuộn mượt mà thay vì nhảy đột ngột ... vì vậy tôi vẫn chấp nhận câu trả lời nếu có ai đó có một giải pháp tốt hơn. Cảm ơn bạn đã trả lời nhanh chóng, gwa, tôi sẽ quay lại nếu cần. :) –

+0

Không vấn đề Chad! Tôi sử dụng nó trong ứng dụng của tôi và cho đến nay nó hoạt động khá tốt. Hãy cho tôi biết trong trường hợp bạn tìm thấy một cái gì đó tốt hơn. Cảm ơn! – gwa

12

Các mã sau đây không phải là hoàn hảo, nhưng nó không làm việc trong nhiều trường hợp:

if (android.os.Build.VERSION.SDK_INT >= 11) 
{ 
    listView.smoothScrollToPositionFromTop(p, 0); 
} 
else if (android.os.Build.VERSION.SDK_INT >= 8) 
{ 
    int firstVisible = listView.getFirstVisiblePosition(); 
    int lastVisible = listView.getLastVisiblePosition(); 
    if (p < firstVisible) 
     listView.smoothScrollToPosition(p); 
    else 
     listView.smoothScrollToPosition(p + lastVisible - firstVisible - 2); 
} 
else 
{ 
    listView.setSelectionFromTop(p, 0); 
} 

+0

Xin lưu ý rằng '' smoothScrollToPositionFromTop() '' có lỗi đã biết. Xem http://stackoverflow.com/questions/14479078/smoothscrolltopositionfromtop-is-not-always-working-like-it-should/#20997828 để biết sự cố và giải pháp. –

Các vấn đề liên quan