2015-06-06 15 views
12

Tôi muốn cuộn theo số lượng pixel nhất định theo hướng y trong recyclerview của tôi. Tôi biết rằng có các phương pháp như scrollToPosition() hoặc scrollToPositionWithOffset(). Tuy nhiên, những thứ đó không thực sự phù hợp với nhu cầu của tôi.Làm thế nào để sử dụng scrollVerticallyBy() với Android RecyclerView và LayoutManager?

Tôi thấy rằng LayoutManager cung cấp phương thức scrollVerticallyBy(int dy, RecyclerView.Recycler recycler, RecyclerView.State state). Nghe như tôi muốn.

Tôi làm cách nào để sử dụng? recyclerstate là gì? Tôi không tìm thấy bất kỳ ví dụ trực tuyến nào, vì vậy một số mã sẽ hữu ích.

+1

Bạn đã tìm thấy giải pháp chưa? –

Trả lời

6

Tôi không biết về scrollVerticallyBy, trông giống như phương thức nội bộ cho RecyclerView. Bạn không chỉ tìm kiếm các phương pháp scrollBy(int x, int y)smoothScrollBy(int dx, int dy)?

Từ các tài liệu:

public void scrollBy (int x, int y)

Di chuyển vị trí cuộn của tầm nhìn của bạn. Điều này sẽ gây ra một cuộc gọi đến onScrollChanged (int, int, int, int) và khung nhìn sẽ bị vô hiệu.

thông số
x int: số lượng điểm ảnh để di chuyển bằng cách theo chiều ngang
y int: số lượng điểm ảnh để di chuyển bằng cách theo chiều dọc

Bạn có thể sử dụng các phương pháp như vậy:

recyclerView.scrollBy(0, 50); //Scroll 50 pixels down 
recyclerView.scrollBy(0, -50); //Scroll 50 pixels up 

Điều tương tự cũng xảy ra với smoothScrollBy.

+0

Ruben là hoàn toàn đúng, 'scrollVerticallyBy' là một phương thức nội bộ mà bạn ghi đè khi bạn đang xây dựng một LayoutManager tùy chỉnh. Để biết thêm thông tin về việc sử dụng nó, hãy xem [tại đây] (http://wiresareobsolete.com/2014/09/building-a-recyclerview-layoutmanager-part-1/) –

+1

scrollBy (int x, int y) và smoothScrollBy (int dx, int dy) không được hỗ trợ trong RecyclerView vì vậy đề xuất của bạn sẽ không hoạt động –

+1

Bạn có ý nghĩa gì bởi "không được hỗ trợ"? Tôi đã sử dụng những phương pháp đó trong một dự án và chúng hoạt động tốt. – rubengees

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