如何在 GridView Android Studio 中完美适配图像

问题描述 投票:0回答:1

我正在尝试创建一个项目,在其中使用 GridView 显示图像。但问题是图像可以有各种尺寸。有些很大,有些很小。所以我想完美地适应GridView中的图像。但无论我尝试什么,都不会让它变得更好。下面的照片可以看得更清楚-

我希望图片是方形大小并且中心裁剪,但由于某种原因它们被垂直拉伸。

相关代码片段如下-

图片查看代码

<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="3dp"
    android:scaleType="centerCrop"
    android:id="@+id/gridImage"/>

GridView代码

<GridView
    android:id="@+id/grid"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:numColumns="3"
    android:scrollbars="vertical"
    android:horizontalSpacing="5dp"
    android:verticalSpacing="3dp"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@id/line" />

GridAdapter 代码

@Override
public View getView(int i, View view, ViewGroup viewGroup) {
    if(inflater==null)
        inflater = (LayoutInflater) cx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    if(view == null)
        view = inflater.inflate(R.layout.grid_item, null);

    ImageView imageView = view.findViewById(R.id.gridImage);
    Pictures p = pictures.get(i);
    Glide.with(cx).load(p.getImageID()).centerCrop().placeholder(R.drawable.avatar).into(imageView);
    return view;
}

我尝试了 ImageView 的所有缩放类型,但没有一个使图像成为正方形、中心裁剪并完美地适合 GridView 内部。我在这里错过了什么吗?

java android gridview imageview
1个回答
0
投票

您可以使用众所周知的第三方库(如 picasso 或 glide)将图像加载到 ImageView 中,这与原生加载相比非常容易。当我们将原生加载与 picasso/glide 进行比较时,原生加载有一些缺点,如内存泄漏、复杂性和一致性。虽然您可以轻松地从 glide/picasso 实现您想要的目标。

© www.soinside.com 2019 - 2024. All rights reserved.