将项目加载到GridView时显示默认容器

时间:2016-07-24 10:45:57

标签: android gridview android-gridview

我想在GridView上显示项目,这些项目本质上是一个图像,其中包含在运行时从互联网上下载的文本

在下载图像时,我想显示一个默认图像,当完全下载真实图像时,该图像将被替换

问题是我的GridView是用num_of_columns定义的,并且它的项目大小在不同的设备上发生了变化,所以问题是如何知道网格项的大小并放置一个正确大小的默认容器

这可能是GridView:

<GridView
    android:id="@+id/gridAction"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:verticalSpacing="@dimen/grid_vertical_spacing"
    android:horizontalSpacing="@dimen/grid_horizontal_spacing"
    android:numColumns="3"
    android:stretchMode="columnWidth"
    android:gravity="center"
    android:layout_margin="@dimen/tabs_margin_left_right"
    />

我尝试在getView方法中获取大小但是大小不正确

width = holder.mainRL.getWidth();
height = holder.mainRL.getHeight();
Log.i(Utils.TAG, "width: " + width + " height: " + height);

要问的另一件事是如何保持我的物品方形大小而不是矩形?即使我的图像都是方形的,我也会得到矩形大小的项目

2 个答案:

答案 0 :(得分:0)

最适合使用图片并加载它是picasso http://square.github.io/picasso/

 Picasso.with(context)
.load(url_of_image)
.placeholder(R.drawable.user_placeholder)//your image on load
.into(imageView);//your imageView

Picasso还可以裁剪,调整图像大小:

Picasso.with(context)
.load(url)
.resize(50, 50) //resize
.centerCrop() //crop
.into(imageView)

答案 1 :(得分:0)

请考虑使用RecyclerView,它有2个相关的子类:HorizontalGridViewVerticalGridView

您可以拥有自定义RecyclerView.Adapter来处理要显示的项目,和/或自定义RecyclerView.LayoutManager来处理如何来展示项目

有关完整说明和示例代码,请参阅docs