我想创建一个正方形图像的网格,但是我无法让图像以我需要的方式显示。我从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之外的其他东西?有什么建议吗?
请不要挖苦。
谢谢。