これが私の望ましい目標です
。recyclerview を使用して、グリッド アイテムを 3 行で表示したいと考えています。また、画像サイズを dp 120dpx120dp に固定しています。しかし、recyclerViewに空白がないように、グリッドアイテムをすべての垂直スペースに埋めたいと思っています。だから私はアイテムにこのレイアウトを使用しました:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center">
<android.support.v7.widget.CardView
android:id="@+id/view_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:orientation="vertical"
app:elevation="10dp">
<LinearLayout
android:id="@+id/image_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:orientation="vertical">
<ImageView
android:id="@+id/icon"
android:layout_width="120dp"
android:layout_height="120dp"
android:scaleType="centerCrop"/>
<ir.per.ttf.PersianTextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:ellipsize="end"
android:singleLine="true"
android:textSize="16sp"/>
</LinearLayout>
</android.support.v7.widget.CardView>
</LinearLayout
>
しかし、私が見ているのはこのようなもので、画像は中央がトリミングされていません!
しかし、画像サイズを 100dpx100dp に縮小すると、私の RecyclerView はアイテムでいっぱいになりません:
希望のビューに到達できません。
これが私のアダプターの使い方です:
GridLayoutManager gridLayoutManager = new GridLayoutManager(context, 3,
LinearLayoutManager.VERTICAL, false);
gridLayoutManager.setReverseLayout(true);
holder.horizonrtalItemRecyclerView.setLayoutManager(gridLayoutManager);
RecyclerChambersAdapter recyclerAdapter = new RecyclerChambersAdapter(context, items.get(position),3); //pass context, Items and showing count
holder.horizonrtalItemRecyclerView.setAdapter(recyclerAdapter);
これはonBindビューホルダーです:
@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
RecyclerChambersItemViewHolder holder = (RecyclerChambersItemViewHolder) viewHolder;
try {
holder.setmyClass(myClasses.get(position));
holder.setTitle(myClasses.get(position).getName());
holder.setId(myClasses.get(position).getId());
holder.setItemImageSrc(myClasses.get(position).getPhoto().getUrl().toString());
} catch (Exception ex) {
holder.setItemImageSrc("");
ex.printStackTrace();
}
}