Android GridView 3 x 6 图像裁剪

5
我想创建一个正方形图像的网格,但是我无法让图像以我需要的方式显示。我从GridView教程开始:

http://developer.android.com/resources/tutorials/views/hello-gridview.html

这似乎接近我想要的。唯一的区别是,我需要精确地有18张图片,并且它们都需要是正方形的大小。我将列数设置为3,然后加载18张图片,它们应该在6行中。我希望图片能够完全填满每一行,不留下任何不必要的额外空隙。我不知道图片的大小,直到它们下载到手机上。希望它们一开始就是几乎正方形的,但我需要裁剪中心使它们完美地成为正方形,然后缩放它们以充分填满3列。我需要图片保持其纵横比。

我似乎找不到设置或代码来实现这个功能。图片重叠,有空隙,不能正确缩放,或者其他问题。最接近的方法是在我的模拟器设置为480x800时更改GridView教程如下:

imageView.setLayoutParams(new GridView.LayoutParams(480/3, 480/3));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(0, 0, 0, 0);
imageView.setAdjustViewBounds(true);
====
<GridView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/gridview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:numColumns="3" android:stretchMode="columnWidth" android:gravity="fill|clip_horizontal|clip_vertical" />

这几乎是正确的。我使用的正方形测试图像缺少一些像素,非正方形图像不会被裁剪,而是适合黑色边框内以保持比例,硬编码值脆弱,无法在所有手机,方向或布局上工作。 我发现有趣的是,CENTER_CROP文档似乎声称它将通过扩展来适应图像来做我想要的事情,但实际上似乎是CENTER_INSIDE。

我感觉接近了,但从未得到我想要的东西。也许我应该使用除GridView之外的其他东西?有什么建议吗?

请不要挖苦。

谢谢。


请参见 https://dev59.com/rmw15IYBdhLWcg3whMK_。 - larham1
1个回答

0

显然CENTRE_CROP是正确的答案,但您可以上传截图,以便我可以弄清楚并帮助您解决问题吗?

此外,我建议您上传item_layout xml文件。

请确保已将<ImageView>的宽度设置为特定大小。

针对不同的屏幕尺寸灵活性,我建议您通过编程方式获取屏幕宽度,将宽度除以3并从中减去一些填充,然后将相同的值设置为图像的宽度和高度,这将在任何屏幕上都给您一个正方形图像。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接