我想在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);
要问的另一件事是如何保持我的物品方形大小而不是矩形?即使我的图像都是方形的,我也会得到矩形大小的项目
答案 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个相关的子类:HorizontalGridView
和VerticalGridView
。
您可以拥有自定义RecyclerView.Adapter
来处理要显示的项目,和/或自定义RecyclerView.LayoutManager
来处理如何来展示项目
有关完整说明和示例代码,请参阅docs。