wrap_content 在 imageView 上使用 Picasso

wrap_content on imageView using Picasso

我有一个社交媒体,我想将 post 上的图像高度添加到 wrap_content,但是当我检索 Firebase 的图像并将它们显示在 recycler view图像不显示wrap_content。另外我正在使用 Picasso 来设置图像。

设置图像时的部分代码(使用Picasso):

         Picasso.get()
                .load(postList.get(position).getImgUrl())
                .placeholder(R.drawable.m1)
                .fit()
                .centerCrop()
                .into(holder.postImg);

post_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_margin="8dp"
    app:cardCornerRadius="6dp"
    app:cardElevation="10dp"
    android:layout_marginBottom="30dp">
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/post_username"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="start"
            android:layout_marginStart="3dp"
            android:layout_marginTop="8dp"
            android:layout_marginBottom="8dp"
            android:text="george the developer"
            android:textSize="17sp"
            android:textStyle="bold"
            app:layout_constraintBottom_toTopOf="@+id/post_image"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.038"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="1.0" />

        <ImageView
            android:id="@+id/post_image"
            android:layout_width="match_parent"
            android:layout_height="wrap_contenta\"
            android:src="@drawable/m1"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/post_username" />

        <ImageButton
            android:id="@+id/likeBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="15dp"
            android:background="@null"
            app:layout_constraintBottom_toTopOf="@+id/post_image"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="1.0"
            app:layout_constraintStart_toEndOf="@+id/post_username"
            app:layout_constraintTop_toTopOf="parent"
            app:srcCompat="@drawable/like_emoji_before" />

        <TextView
            android:id="@+id/like_counter"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="5dp"
            android:text="0"
            android:textSize="17sp"
            android:textStyle="bold"
            app:layout_constraintBottom_toTopOf="@+id/post_image"
            app:layout_constraintEnd_toStartOf="@+id/likeBtn"
            app:layout_constraintHorizontal_bias="1.0"
            app:layout_constraintStart_toEndOf="@+id/post_username"
            app:layout_constraintTop_toTopOf="parent" />

    </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>

您需要删除 centerCrop() 以避免裁剪图像,同时删除 fit(),因为它会尝试计算合适的图像大小,尽管您需要它的全尺寸。

所以现在我们有:

     Picasso.get()
            .load(postList.get(position).getImgUrl())
            .placeholder(R.drawable.m1)
            .into(holder.postImg);

对于 ImageView:添加以下几个属性以确保图像具有完整尺寸。

    <ImageView
        ...
         android:scaleType="fitStart"    
         android:adjustViewBounds="true"/>