我正在开发一个从网上下载图像并将其显示在GridView中的应用程序。我的问题是GridView显示图像缩小,图像宽度为185px,但GridView显示它们要小得多。因此,图像之间水平间隙很大,我希望图像彼此相邻,分为两列。
GridView适配器代码:
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
// if it's not recycled, initialize some attributes
imageView = new ImageView(context);
imageView.setLayoutParams(new GridView.LayoutParams(185, 185));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
String url;
Response.Movie temp=movieList.get(position);
url=POSTER_BASE_URL+temp.getPoster_path();
Picasso.with(context).load(url).into(imageView);
// imageView.setImageResource(mThumbIds[position]);*/
return imageView;
}
和xml中的GridView:
<GridView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/gridView"
android:numColumns="auto_fit"
android:stretchMode="columnWidth"
android:gravity="center"
/>
这是一个关于GridView如何显示图像的屏幕: http://subefotos.com/ver/?24d92113e4c0f2c67c6b0276072b822ao.png
任何帮助都将受到高度赞赏。谢谢你提前。
答案 0 :(得分:0)
使用dp而不是px。它的工作原理基于密度和分辨率。
new GridView.LayoutParams(dpToPx(185), dpToPx(185));
public int dpToPx(int dp) {
DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics();
int px = Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));
return px;
}