1

我想在GridView这些约束中显示一些图像缩略图(图像是正方形),每行恰好显示两个图像并且图像适合屏幕宽度(填充和边距除外)但具有最大宽度和高度(例如 1 英寸)
我已阅读问题但无法解决问题。你能帮我么。

网格视图 xml:

<GridView
    android:id="@+id/gridview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:horizontalSpacing="10dp"
    android:numColumns="2"
    android:scrollbarStyle="outsideOverlay"
    android:scrollbars="vertical"
    android:stretchMode="columnWidth"
    android:verticalScrollbarPosition="right"
    android:verticalSpacing="10dp"
    android:padding="10dp" />

GridView 项目 xml:

<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/thumbnail"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:scaleType="fitXY"
    android:maxWidth="72pt"
    android:maxHeight="72pt"
    />

我添加了两张图片来显示我想要什么

4 英寸手机中的网格视图

7 英寸平板电脑中的网格视图

第一张照片(4 英寸手机)正是我想要的,但随着屏幕宽度的增长(平板电脑或横向),如图像 2,我想放大图像项目。(请注意,有一个最大宽度大小,因此此模式下的结果与图 1 中的手机不同)

4

4 回答 4

1

您必须自己计算所需的水平间距。

由于结果以像素为单位,并且您可能希望处理实际尺寸(如英寸或 DP),因此您首先需要将约束转换为像素。例如,为了将 DP 转换为像素,请使用:

float px = someDpValue * context.getResources().getDisplayMetrics().density;

然后,您可以使用此方法获取 gridView 的大小,然后您将能够进行计算并相应地设置 gridView 及其适配器。

您可能需要设置每列的水平间距和高度。

请注意,如果网格内的 imageViews 将使用非方形图像,它们将保持其纵横比,因此您也必须处理它。您可以使用 center-crop 作为缩放类型,或者只是拉伸图像。

于 2013-08-05T18:25:52.703 回答
0

这是我刚刚测试过的东西:

因为您在 xml 中添加了 GridView,所以在您设置适配器时它已被绘制,因此调用了 onMeasure。就此而言,您可以使用获取 gridView 的宽度(实际值)GridView.getWidth()并将其传递给适配器的实例。然后您可以使用它来设置项目的宽度和高度(在getView()方法中),当然您必须手动计算边距,但是如果在项目的布局 xml 中定义填充则可以完美地工作

于 2013-08-05T18:10:29.417 回答
0

您是否尝试将 GridView 的项目布局中 ImageView 的 layout_width 设置为 match_parent?

于 2013-08-05T17:21:17.063 回答
0

您需要扩展 imageview 以创建高度始终与宽度匹配的 imageview。然后使用这个视图而不是股票图像视图并将布局宽度和高度设置为 match_parent。并删除 maxWidth 和 maxHeight。

于 2013-08-05T17:41:19.553 回答