4

これが私の望ましい目標です ここに画像の説明を入力 。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();
        }

    }
4

1 に答える 1

0

set all でグリッド項目を変更することで、この問題を解決しましたwidth="match_parent"

<?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"
              xmlns:tools="http://schemas.android.com/tools"
              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="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:orientation="vertical"
        app:elevation="10dp">

        <LinearLayout
            android:id="@+id/image_container"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/icon"
                android:layout_width="match_parent"
                android:layout_height="120dp"
                android:adjustViewBounds="true"
                android:scaleType="centerCrop"
                android:transitionName="@string/transition_avatar"
                tools:ignore="ContentDescription"/>

            <ir.per.ttf.PersianTextView
                android:id="@+id/title"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:ellipsize="end"
                android:singleLine="true"
                android:textSize="16sp"
                android:transitionName="@string/transition_title"
                app:customTypeface="@string/primary_font"/>

        </LinearLayout>

    </android.support.v7.widget.CardView>

</LinearLayout>

今、私は自分のビューを実現し、アイテムがすべてのリサイクルビュースペースを埋め、すべての画像が中央にトリミングされています。

于 2017-01-07T08:46:49.867 に答える