我正在尝试创建一个项目,在其中使用 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 内部。我在这里错过了什么吗?
您可以使用众所周知的第三方库(如 picasso 或 glide)将图像加载到 ImageView 中,这与原生加载相比非常容易。当我们将原生加载与 picasso/glide 进行比较时,原生加载有一些缺点,如内存泄漏、复杂性和一致性。虽然您可以轻松地从 glide/picasso 实现您想要的目标。