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"/>
我有一个社交媒体,我想将 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"/>