【问题标题】:Gridview does not show all the picture, only a small partGridview没有显示全部图片,只显示一小部分
【发布时间】:2013-12-03 08:20:04
【问题描述】:

我有以下GridView

public View getView(int position, View convertView, ViewGroup parent) {

    ImageView imageView;
    if (convertView == null) {
        imageView = new ImageView(context);
        imageView.setScaleType(ScaleType.CENTER_CROP);
    } else {
        imageView = (ImageView) convertView;
    }
    if (mTemplates.get(position).getResource() != 0) {
        LogService.log("", "zzzzzzzzzzzzzzzz======loaded from resource" + mTemplates.get(position).getResource() + "???????????" + mTemplates.size());
        imageView.setImageResource(mTemplates.get(position).getResource());
    } else {
        imageView.setImageDrawable(mTemplates.get(position).getDrawableThumbnail());
        // imageView.setImageResource(mTemplates.get(0).getResource());
        LogService.log("", "zzzzzzzzzzzzzzzz======loaded from drawable");
        LogService.log("", "=========SIZE: " + mTemplates.size());
    }
    return imageView;
}

现在我有一些元素在 Drawables 中没有资源,而是在 sdcard 上的一个文件夹中,所以我从这些图片的源创建了一个 drawable,并尝试在 gridview 上加载该 drawable:

imageView.setImageDrawable(mTemplates.get(position).getDrawableThumbnail());

但是它就像gridview不能识别这些,如果它与其他图片在同一个列上显示,但如果它在另一个列(下),它只会显示2-3mm的图片(也不会'不承认它的位置,就像它不在那里E)。 如果我像这样硬编码并使用资源中的第一张图片:

imageView.setImageResource(mTemplates.get(0).getResource());

一切正常,可能是什么问题?

【问题讨论】:

    标签: android image gridview imageview adapter


    【解决方案1】:

    因为图片的实际尺寸是小尺寸,但是当从 Resources 加载 imageView 时,它会将其拉伸到其父尺寸。

    通过计算所需高度解决了这个问题,然后加载所有具有该高度的图片:

     public AdapterGridView(Context c) {
        context = c;
        DisplayMetrics metrics = new DisplayMetrics();
        ((Activity) c).getWindowManager().getDefaultDisplay().getMetrics(metrics);
        if (Constants.IS_TABLET) {
            height = metrics.widthPixels / 9 - (int) Util.pxFromDp(2, c);
        } else {
            height = metrics.widthPixels / 4 - (int) Util.pxFromDp(2, c);
        }
    }
    
    public View getView(int position, View convertView, ViewGroup parent) {
    
        ImageView imageView;
        if (convertView == null) {
            imageView = new ImageView(context);
        } else {
            imageView = (ImageView) convertView;
        }
        imageView.setScaleType(ScaleType.CENTER_CROP);
        imageView.setAdjustViewBounds(true);
        if (mTemplates.get(position).getResource() != 0) {
            imageView.setImageResource(mTemplates.get(position).getResource());
        } else {
            imageView.setImageDrawable(mTemplates.get(position).getDrawableThumbnail());
        }
        imageView.setLayoutParams(new LayoutParams(height, height));
        return imageView;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-31
      • 1970-01-01
      • 1970-01-01
      • 2012-04-11
      • 2023-04-03
      相关资源
      最近更新 更多