2014-12-24 16 views
20


Có thể chồng chéo các mục từ RecyclerView không?
Tôi đang thử với LinearLayoutManager.
Yêu cầu của tôi chỉ giống như trong LinearLayoutManager và tôi chỉ cần chồng chéo các mục bên trong từ trên xuống dưới. (như thẻ xếp chồng)Cách chồng chéo các mục trong LinearLayoutManager - RecyclerView (như xếp chồng thẻ)

Tôi đã xem some variant bằng cách sử dụng ListView. Vì vậy, tôi hình nó sẽ là có thể trong RecyclerView quá.Nhưng, sau một số lần thăm dò, Tôi cảm thấy như nó sẽ mất một thời gian để thực hiện một tùy chỉnh bố trí quản lý và khá một mức độ hiểu biết về điều này. vào bài của Dave về Building Custom LayoutManager)

Vì vậy, bây giờ tôi đang nghĩ tôi chỉ có thể cần phải sử dụng biến thể ListView dựa trên yêu cầu của tôi thay vì đối phó với nhiều sự phức tạp này của Custom Layout Manager.

Nhưng, tôi chỉ cần đặt các mục bên trong để chồng lên nhau. Tôi cảm thấy có thể có một số hướng khác mà tôi chưa biết. Xin vui lòng cho tôi biết nếu có bất kỳ ngoài từ trên ListView varientTrình quản lý bố cục tùy chỉnh.

Tôi cũng sẽ đăng các phát hiện của mình bên dưới đây.

+0

Có thể bạn có thể sử dụng dự án này https://github.com/Diolor/Swipecards? – kphil

Trả lời

27

Tôi giả sử bạn đang tìm kiếm một phần chồng lên nhau (ví dụ: các thẻ hơi bị mờ một chút). Nếu vậy, điều này có vẻ khá đơn giản với RecyclerView và một ItemDecoration tùy chỉnh. Dưới đây là một ví dụ tầm thường của một trong đó chồng lên các mục bằng cách 90px chiều dọc:

public class OverlapDecoration extends RecyclerView.ItemDecoration { 

    private final static int vertOverlap = -90; 

    @Override 
    public void getItemOffsets (Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { 

    outRect.set(0, vertOverlap, 0, 0); 

    } 
} 

Ví dụ này mã cứng bù đắp, nhưng nếu mục danh sách khác nhau về chiều cao, bạn sẽ cần phải đo lường và thêm logic cho việc này.

Thêm trang trí này vào RV trước khi đặt bố cục. Tôi đã thử nó với một StaggeredGrid nhưng nó sẽ làm việc với LinearLayout và Grid LM là tốt.

+1

Nó có một hành vi kỳ lạ mà chỉ hiển thị các mục có thể được vẽ hoàn toàn. Nó sẽ không hiển thị phần trên cùng của mục tiếp theo bên dưới phần dưới cùng. – shiami

+2

Tôi hiểu rằng câu trả lời này có thể không phù hợp với tất cả mọi người, nhưng tôi không hiểu các phiếu bầu. Nó hoạt động, ngay cả khi như ghi chú của shiami, nó không hiển thị phần trên của mục bên dưới. Đây vẫn là câu trả lời duy nhất mà mọi người đã cung cấp cho câu hỏi 9 tháng tuổi này và cách tiếp cận được đề xuất duy nhất không yêu cầu trình quản lý bố cục tùy chỉnh. – MojoTosh

+1

Đối với những người muốn biết cách tránh mục trên cùng, hãy thử một cái gì đó như: 'final int itemPosition = parent.getChildAdapterPosition (view); nếu (itemPosition == RecyclerView.NO_POSITION) { trả lại; } 'để nhận vị trí của chế độ xem. Bỏ qua dòng 'outRect.set()' cho mục trên cùng. –

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