2016-09-28 20 views
12

Tôi đang sử dụng RecyclerView với StaggeredGridLayoutManager.RecyclerView autofit LayoutManager

Tôi muốn điều này StaggeredGridLayoutManager hoặc bất cứ nơi nào LayoutManager chiếm lĩnh vực trống nếu có. Ví dụ: nếu tôi đặt spanCount = 3 , nó phải chiếm toàn bộ chiều rộng màn hình ngay cả khi tôi có 2 mục hoặc 1 mục. Trong StaggeredGridLayoutManager Tôi có thể kéo dài một hàng duy nhất bằng cách: setFullSpan(true); nhưng không thể mở rộng 2 mục chỉ cho một hàng.

Mã của tôi cho RecyclerView:

StaggeredGridLayoutManager sglm= new StaggeredGridLayoutManager(spanCount,StaggeredGridLayoutManager.VERTICAL); 
sglm.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_MOVE_ITEMS_BETWEEN_SPANS); 

tôi đã cố gắng AsymmetricGridViewtwoway-view nhưng luôn luôn có một vùng trống

tôi thu thập một số ảnh chụp màn hình của Facebook App:

enter image description here

Và đây là Ứng dụng Google Keep vì bạn có thể thấy chiều cao hàng được cố định cho mỗi hàng bu t chiều rộng của mặt hàng linh hoạt và tôi chưa bao giờ thấy bất kỳ vùng trống với Google Keep:

enter image description here

Và khi tôi đang sử dụng nó luôn luôn có một vùng trống, như bạn có thể nhìn thấy một phần màu đen của hình ảnh trống. Tôi muốn các RecyclerView nên chiếm khu vực đó bằng cách mở rộng hàng của tôi như thế nào trong ứng dụng Google Keep:

enter image description here

tôi truy cập trang này: android-how-to-create-a-facebook-like-images-gallery-grid nhưng nó không giúp tôi.

Đây là một trang khác tôi tới thăm: grid-of-images-like-facebook-for-android

Có ai sử dụng RecyclerView hoặc bất kỳ View như vậy? Ai đó có thể gợi ý cho tôi bất kỳ cách nào hoặc bất kỳ ý tưởng hoặc hướng dẫn tôi đến nơi tôi phải bắt đầu không?

+0

nếu phần màu đen là một phần của hình ảnh tôi nghĩ rằng nó không thể được giải quyết. tuy nhiên việc quản lý chiều rộng màn hình và không có thêm dung lượng nào có thể được giải quyết. –

+0

@HammadTariq nếu bạn nhìn vào Google Keep, chiều cao hàng của nó được cố định cho mỗi hàng và hình ảnh của nó là linh hoạt. Vì vậy, bạn không bao giờ thấy phần màu đen trên đó. Tôi có thể sửa chiều rộng nhưng tôi luôn thấy không gian thừa ở dưới cùng của 'RecyclerView'. Vậy có cách tiếp cận nào hay cách nào để ngăn chặn không gian ở phía dưới? –

+0

Bạn muốn chỉ định chiều cao bằng nhau cho tất cả các hàng? hoặc mỗi mục hàng phải có chiều cao bằng nhau? nếu bạn muốn tất cả các hàng và các mặt hàng của họ có chiều cao bằng nhau thì có thể. –

Trả lời

2
/** 
* A LayoutManager that lays out children in a staggered grid formation. 
* It supports horizontal & vertical layout as well as an ability to layout children in reverse. 
* <p> 
* Staggered grids are likely to have gaps at the edges of the layout. To avoid these gaps, 
* StaggeredGridLayoutManager can offset spans independently or move items between spans. You can 
* control this behavior via {@link #setGapStrategy(int)}. 
*/ 


/** 
* Sets the gap handling strategy for StaggeredGridLayoutManager. If the gapStrategy parameter 
* is different than the current strategy, calling this method will trigger a layout request. 
* 
* @param gapStrategy The new gap handling strategy. Should be 
*     {@link #GAP_HANDLING_MOVE_ITEMS_BETWEEN_SPANS} or {@link 
*     #GAP_HANDLING_NONE}. 
* @see #getGapStrategy() 
*/ 
public void setGapStrategy(int gapStrategy) { 
    assertNotInLayoutOrScroll(null); 
    if (gapStrategy == mGapStrategy) { 
     return; 
    } 
    if (gapStrategy != GAP_HANDLING_NONE && 
      gapStrategy != GAP_HANDLING_MOVE_ITEMS_BETWEEN_SPANS) { 
     throw new IllegalArgumentException("invalid gap strategy. Must be GAP_HANDLING_NONE " 
       + "or GAP_HANDLING_MOVE_ITEMS_BETWEEN_SPANS"); 
    } 
    mGapStrategy = gapStrategy; 
    setAutoMeasureEnabled(mGapStrategy != GAP_HANDLING_NONE); 
    requestLayout(); 
} 
+0

Nếu bạn nhìn vào câu hỏi của tôi, tôi đã có điều này. –

3

Kiểm tra này trên Git

BitFrames

Nó giúp bạn thiết lập hình ảnh như bạn muốn.

Kiểm tra này trên Play Store

PlayStore App

+0

Tôi sẽ thử dự án này và cho bạn biết kết quả. Cảm ơn –

+0

Bạn đang sử dụng dự án này –

+0

Dự án của đồng nghiệp cũ của tôi. Anh ấy là thiên tài. Đã được triển khai trong một dự án. Tuyệt vời của nó. – SANAT

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