kịch bản hiện tạiRecyclerView tách xem vẫn có thể nhìn thấy
Tôi đang sử dụng thư viện này https://github.com/kanytu/android-parallax-recyclerview để đạt được một hiệu ứng thị sai trên RecyclerView. Càng xa càng tốt. Tuy nhiên, tôi muốn nhận được một hiệu ứng như Google Newsstand nơi tiêu đề vẫn ở dưới các thẻ.
Vấn đề
Vấn đề là RecyclerView (hoặc LinerLayoutManager) tách header xem thời điểm các yếu tố đầu tiên của danh sách chạm đầu xem mẹ:
Như bạn có thể thấy khoảnh khắc cardview đầu tiên chạm đỉnh là thời điểm RecyclerView xóa bỏ tiêu đề.
Tôi chắc chắn rằng không có vấn đề gì trên bản thân logic tôi nhận được RecyclerView.findViewHolderForPosition(0) == null
khi thẻ đạt đến đỉnh. Chứng minh rằng tiêu đề được tái chế.
Solutions Cố gắng
tôi đã cố gắng rất nhiều thứ như:
ViewHolder.setIsRecyclable sử dụng phương pháp này để thiết lập các cuộc phiêu lưu không tái chế không làm bất cứ hiệu lực.
LayoutManager.ignoreView Tôi đã cố đánh dấu chế độ xem là bị bỏ qua do quá trình vò và tái chế. Kết quả là một ngoại lệ cho biết: Trying to recycle an ignored view holder. You should first call stopIgnoringView(view) before calling recycle.
setItemViewCacheSize Không làm gì cả. Đã cố gắng gọi setItemViewCacheSize(50)
và nó không làm bất cứ điều gì để tiêu đề.
setMaxRecycledViews Đã cố gắng đặt tối đa chế độ xem được tái chế với chế độ xemType = HEADER thành 0 và nó vẫn tái chế nó.
Kết luận
Vì vậy, tôi thắc mắc nếu có anyway để đánh dấu mục cho không nhận được tách ra cho đến khi tôi ra lệnh như vậy (như kiểm tra nếu nó vẫn còn có thể nhìn thấy và sau đó tách nó).
Ngoài ra còn có một vấn đề trên github về nó: https://github.com/kanytu/android-parallax-recyclerview/issues/7
'setItemViewCacheSize' có ảnh hưởng đến nó không? https://developer.android.com/reference/android/support/v7/widget/RecyclerView.html#setItemViewCacheSize(int) – darnmason
@darnmason No. Nó dường như không có tác dụng gì. Không có 'getRecycledViewPool(). SetMaxRecycledViews()' –
Tôi đoán đó là công việc của LayoutManager chứ không phải RecyclerView, có lẽ bạn sẽ cần một tùy chỉnh mà không bao giờ làm mất mục đầu tiên. – darnmason