Android ImageView回收视图中的大小错误的CardView

Android ImageView回收视图中的大小错误的CardView,android,android-recyclerview,imageview,android-glide,cardview,Android,Android Recyclerview,Imageview,Android Glide,Cardview,我的图像视图在回收视图中的卡片视图中有问题 我用Glide加载图像,但是第一次打开应用程序时,CardView中的ImageView显示了错误的宽度和高度,但是如果我转到其他活动并再次返回到Recyclerview,我将看到正确大小的图像 正如您所看到的,绿色不应该被看到 在这里,您可以看到vegeture.xml: <androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk

我的图像视图在回收视图中的卡片视图中有问题

我用Glide加载图像,但是第一次打开应用程序时,CardView中的ImageView显示了错误的宽度和高度,但是如果我转到其他活动并再次返回到Recyclerview,我将看到正确大小的图像

正如您所看到的,绿色不应该被看到

在这里,您可以看到vegeture.xml:

<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/cardViewVegetables"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardCornerRadius="@dimen/corner_radius_cardview"
card_view:cardElevation="@dimen/elevation_cardview"
card_view:cardMaxElevation="@dimen/elevation_cardview"
card_view:cardUseCompatPadding="true">
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:background="@color/md_green_900">
    <RelativeLayout
        android:id="@+id/relativeLayoutVegetable1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@color/md_black_1000">
        <ImageView
            android:id="@+id/imageVegetable1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal|center_vertical"
            android:layout_centerVertical="true"
            android:layout_centerHorizontal="true"
            android:adjustViewBounds="true"
            />
        <me.grantland.widget.AutofitTextView
            android:id="@+id/nameVegetable1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal|center_vertical"
            android:textColor="@color/whiteGrayVegetable"
            android:layout_centerVertical="true"
            android:layout_centerHorizontal="true"
            android:textStyle="bold"
            android:maxLines="2"/>
    </RelativeLayout>
    <RelativeLayout
        android:id="@+id/relativeLayoutVegetable2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <ImageView
            android:id="@+id/imageVegetable2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal|center_vertical"
            android:layout_centerVertical="true"
            android:layout_centerHorizontal="true"
            android:adjustViewBounds="true"/>
        <me.grantland.widget.AutofitTextView
            android:id="@+id/nameVegetable2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal|center_vertical"
            android:layout_centerVertical="true"
            android:layout_centerHorizontal="true"
            android:textColor="@color/whiteGrayVegetable"
            android:textStyle="bold"
            android:maxLines="2"/>
    </RelativeLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>

下面是recyclerview的代码:

public class vegetableRVA extends RecyclerView.Adapter<vegetableRVA.VegetableViewHolder>{

private Context context;
private List<vegetable> Vegetables;

class VegetableViewHolder extends RecyclerView.ViewHolder {
    private AutofitTextView vegetableName1;
    private AutofitTextView vegetableName2;
    private ImageView vegetablePhoto1;
    private ImageView vegetablePhoto2;
    private RelativeLayout relativeLayoutVegetable1;
    private RelativeLayout relativeLayoutVegetable2;
        VegetableViewHolder(@NonNull View itemView) {
            super(itemView);
            vegetableName1 = itemView.findViewById(R.id.nameVegetable1);
            vegetableName2 = itemView.findViewById(R.id.nameVegetable2);
            vegetableName1.setTextSize((float)context.getResources()
                          .getDisplayMetrics().widthPixels/25);
            vegetableName1.setGravity(Gravity.CENTER);
            vegetableName2.setTextSize((float)context.getResources()
                          .getDisplayMetrics().widthPixels/25);
            vegetableName2.setGravity(Gravity.CENTER);
            vegetablePhoto1 = itemView.findViewById(R.id.imageVegetable1);
            vegetablePhoto2 = itemView.findViewById(R.id.imageVegetable2);

@Override
public void onBindViewHolder(@NonNull VegetableViewHolder vegetableViewHolder, int position) {
      int widthDP = (int) context.getResources().getDisplayMetrics().widthPixels / 2;
      vegetableViewHolder.vegetableName1.setMaxWidth(widthDP);
      vegetableViewHolder.vegetableName1.setSizeToFit();
      vegetableViewHolder.vegetableName1.setMaxTextSize((int) widthDP/12);
      vegetableViewHolder.vegetableName2.setMaxWidth(widthDP);
      vegetableViewHolder.vegetableName2.setSizeToFit();
      vegetableViewHolder.vegetableName2.setMaxTextSize((int) widthDP/12);
      
      vegetableViewHolder.vegetablePhoto1.setImageDrawable(null);
      vegetableViewHolder.vegetablePhoto2.setImageDrawable(null);
      if (context != null) {
           Glide.with(context)
                .asBitmap()
                .load(Vegetables.get(position).getImageVegetableDisyuntive().get(0))
                .dontAnimate()
                .centerCrop()
                .override(widthDP+50,heightDP+50 )
                .into(vegetableViewHolder.vegetablePhoto1);
           Glide.with(context)
                .asBitmap()
                .load(Vegetables.get(position).getImageVegetableDisyuntive().get(1))
                .dontAnimate()
                .centerCrop()
                .override(widthDP+50, heightDP+50)
                .into(vegetableViewHolder.vegetablePhoto2);
       }
       RelativeLayout.LayoutParams parms = new RelativeLayout.LayoutParams(widthDP,heightDP);
       vegetableViewHolder.vegetablePhoto1.setLayoutParams(parms);
       vegetableViewHolder.vegetablePhoto2.setLayoutParams(parms);
       vegetableViewHolder.vegetablePhoto1.setBackgroundColor(Color.RED);
  }
公共类vegetableRVA扩展了RecyclerView.Adapter{
私人语境;
私人蔬菜清单;
类VegetableViewHolder扩展了RecyclerView.ViewHolder{
私有AutofitTextView vegetableName1;
私有AutofitTextView vegetableName2;
私有ImageView vegetablePhoto1;
私有ImageView vegetablePhoto2;
私人相对物yout相对物yout植物表1;
私人相对物yout相对物yout植物表2;
VegetableViewHolder(@NonNull View itemView){
超级(项目视图);
vegetableName1=itemView.findviewbyd(R.id.nameVegetable1);
vegetableName2=itemView.findViewById(R.id.nameVegetable2);
vegetableName1.setTextSize((float)context.getResources()
.getDisplayMetrics().widthPixels/25);
植物胺1.设置重力(重力.中心);
vegetableName2.setTextSize((float)context.getResources()
.getDisplayMetrics().widthPixels/25);
植物胺2.设置重力(重力.中心);
vegetablePhoto1=itemView.findviewbyd(R.id.imageVegetable1);
vegetablePhoto2=itemView.findviewbyd(R.id.imageVegetable2);
@凌驾
BindViewHolder上的公共无效(@NonNull VegetableViewHolder VegetableViewHolder,int位置){
int widthDP=(int)context.getResources().getDisplayMetrics().widthPixels/2;
vegetableViewHolder.vegetableName1.setMaxWidth(widthDP);
vegetableViewHolder.vegetableName1.setSizeToFit();
vegetableViewHolder.vegetableName1.setMaxTextSize((int)widthDP/12);
vegetableViewHolder.vegetableName2.setMaxWidth(widthDP);
vegetableViewHolder.vegetableName2.setSizeToFit();
vegetableViewHolder.vegetableName2.setMaxTextSize((int)widthDP/12);
vegetableViewHolder.vegetablePhoto1.setImageDrawable(空);
vegetableViewHolder.vegetablePhoto2.setImageDrawable(null);
if(上下文!=null){
带(上下文)滑动
.asBitmap()
.load(vegets.get(position.getImageVegetableDisyuntive().get(0))
.dontAnimate()
.centerCrop()
.超控(宽度DP+50,高度DP+50)
.into(vegetableViewHolder.vegetablePhoto1);
带(上下文)滑动
.asBitmap()
.load(vegets.get(position.getImageVegetableDisyuntive().get(1))
.dontAnimate()
.centerCrop()
.超控(宽度DP+50,高度DP+50)
.into(vegetableViewHolder.vegetablePhoto2);
}
RelativeLayout.LayoutParams参数=新的RelativeLayout.LayoutParams(宽度DP、高度DP);
vegetableViewHolder.vegetablePhoto1.setLayoutParams(parms);
vegetableViewHolder.vegetablePhoto2.setlayoutparms;
vegetableViewHolder.vegetablePhoto1.setBackgroundColor(Color.RED);
}

我不知道为什么在我第一次打开de应用程序时,CardView中图像的大小不好,但在打开其他活动后,大小还可以。

两个
相对年轻人都有
android:layout\u width=“wrap\u content”
,但其所有“子代”都有
android:layout\u width=“match\u parent”
。这可能会导致一种不可能的状态,这种状态在某些情况下恰好是正确的。那么,最好的状态是什么?,
RelativeLayout
android:layout\u with=“match\u parent”
以及所有与
android:layout\u width=“wrap\u content”匹配的儿童
?我已将所有
版面宽度
版面高度
更改为
包裹内容
,但看起来相同。