如何在RecyclerView中显示确切数量的项目?

我试图在RecyclerView中显示确切(如3项)。 我们的Web应用程序显示如下:

在这里输入图像说明

如果我移动物品:

在这里输入图像说明

并释放鼠标,它会自动来到这个: 在这里输入图像说明

在Android中,我使用RecyclerView显示图像:

在这里输入图像说明

如何在RecyclerView的可见区域显示3个项目? 如何避免显示“一半”项目? 这可能吗?

RecyclerView:

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

回收站视图中的一件物品:

 <?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> 

码:

  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); 

一个解决方法就是设定每个孩子的节奏宽度

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

和这样的屏幕大小:

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

我已经完成了以上任务,请参考以下代码

在我的RecycleView Adapter onCreateViewHolder()方法,我找出了屏幕的宽度,并分为3个部分,请检查一次。

 @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); } 

从上面我们使用的代码getScreenWidth()方法如下,请检查它。

 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; } 

通常来说,实现这一目标的方式并不存在回收商视图带来的直接属性。

这是可以实现的方式是通过父宽度发送到适配器..

用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; } }