2016-02-02 17 views
12

Tôi đang cố hiển thị chính xác (ví dụ 3 mục) trong RecyclerView. ứng dụng web của chúng tôi cho thấy như thế này:Làm cách nào để hiển thị số lượng các mục chính xác trong RecyclerView?

enter image description here

Nếu tôi chuyển mục:

enter image description here

và thả chuột, nó sẽ tự động nói đến điều này: enter image description here

Trong Android, Tôi đang hiển thị hình ảnh bằng RecyclerView:

enter image description here

Làm cách nào để hiển thị chính xác 3 mục trong khu vực hiển thị của RecyclerView? Làm cách nào để tránh hiển thị các mục "một nửa"? Điều này có thể không?

RecyclerView:

 <android.support.v7.widget.RecyclerView 
      android:layout_width="wrap_content" 
      android:layout_height="130dp" 
      android:id="@+id/rvProducts" /> 

Một mục theo quan điểm tái chế:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <ImageView 
     android:layout_width="100dp" 
     android:layout_height="wrap_content" 
     android:padding="10dp" 
     android:id="@+id/ivProduct" 
     android:src="@drawable/noimage"/> 

</LinearLayout> 

Code:

LinearLayoutManager layoutManager 
      = new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false); 
    RecyclerView productImageList = (RecyclerView) view.findViewById(R.id.rvProducts); 
    productImageList.setLayoutManager(layoutManager); 
    GalleryRecyclerAdapter adapter = new GalleryRecyclerAdapter(images); 
    productImageList.setAdapter(adapter); 
+0

hiển thị tệp xml của bạn –

+0

xem câu hỏi đã chỉnh sửa của tôi –

Trả lời

9

Một giải pháp là để thiết lập width của mỗi đứa trẻ theo chương trình thích.

view.getLayoutParams().width = getScreenWidth()/VIEWS_COUNT_TO_DISPLAY; 

Và kích thước màn hình như thế này:

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics).widthPixels; 
2

Trong một cách tổng quát để đạt được điều này không có tài sản thẳng về phía trước mà xem tái chế đi kèm với.

Cách này có thể đạt được là bằng cách gửi trong chiều rộng cha mẹ để adapter ..

Trong một cách suedo ..

Parent width = parent container width; 

    InitialiseRecyclerAdapter(parent width) { 
     on create view holder { 
       Set the width of ur item layout with a width that divides ur parent width in equal parts; 
      } 
} 
5

Tôi đã làm nhiệm vụ trên như phương pháp sau đây, xin vui lòng đề cập đoạn mã sau

On phương pháp onCreateViewHolder() của tôi về tôi RecycleView Adapter, tôi tìm hiểu chiều rộng của màn hình và được chia thành phần.Xin vui lòng eck nó một lần.

@Override 
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View itemView = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.MY_ITEM_TO_INFALTE, parent, false); 

     itemView.getLayoutParams().width = (int) (getScreenWidth()/NUMBERS_OF_ITEM_TO_DISPLAY); /// THIS LINE WILL DIVIDE OUR VIEW INTO NUMBERS OF PARTS 

     return new MyCreationItemAdapter.MyViewHolder(itemView); 
    } 

Từ trên mã getScreenWidth() phương pháp mà chúng tôi sử dụng trên trên là như sau, xin vui lòng kiểm tra xem nó.

public int getScreenWidth() { 

     WindowManager wm = (WindowManager) activity.getSystemService(Context.WINDOW_SERVICE); 
     Display display = wm.getDefaultDisplay(); 
     Point size = new Point(); 
     display.getSize(size); 

     return size.x; 
    } 
Các vấn đề liên quan