GridView不显示图像的实际大小

时间:2015-08-24 10:23:56

标签: android gridview

我正在开发一个从网上下载图像并将其显示在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

任何帮助都将受到高度赞赏。谢谢你提前。

1 个答案:

答案 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;
}