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" />
リサイクル業者ビューの1つのアイテム:
<?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);
1つの解決策は、各子のwidth
をプログラムで設定することです。
view.getLayoutParams().width = getScreenWidth() / VIEWS_COUNT_TO_DISPLAY;
そして、このような画面サイズ:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics).widthPixels;
私は次のアプローチとして上記のタスクを実行しました、次のコードを参照してください
私のonCreateViewHolder()
私のメソッド_RecycleView Adapter
_の場合、画面の幅がわかり、次に分割されますセクション。一度確認してください。
_@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;
}
_
これを達成する一般的な方法では、リサイクラービューに付随する単純なプロパティはありません。
これを実現する方法は、親の幅をアダプターに送信することです。
スェード的に….
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;
}
}
この解決策は私にとってうまくいきました:
private lateinit var productImageList: RecyclerView
override fun onAttachedToRecyclerView(recyclerView: RecyclerView)
{
super.onAttachedToRecyclerView(recyclerView)
productImageList = recyclerView
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ProductViewHolder {
val viewHolder = LayoutInflater.from(parent.context).inflate(R.layout.ITEM_TO_INFALTE, parent, false)
viewHolder.layoutParams.width = productImageList.measuredWidth / NUMBERS_OF_ITEM_TO_DISPLAY
return ProductViewHolder(viewHolder)
}
コードはコトリンにあります、それがあなたを助けることを願っています。