图库和全屏ImageView,将它们放在一起的问题

时间:2010-06-26 21:33:06

标签: android layout gallery imageview

我会尽量保持清醒。

这里我要做的是

图像查看器,其中图像将在设备屏幕上尽可能大地显示。 为了这个目的和更好的用户体验,我想到了一个画廊。 直到那里一切都好!

问题

问题是在我的适配器的getView函数中,它只使用我在Gallery中的第一张Image的Gallery.LayoutParams。这意味着如果第一张照片是风景照片而第二幅照片是纵向照片,则第二张照片将显示为风景照片,尺寸与第一幅照片相同。我重置了Gallery.LayoutParams,但没关系,它仍然有第一个ImageView的LayoutParams。

代码

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

        ImageView im = new ImageView(mContext);

        Bitmap bm = BitmapFactory.decodeByteArray(gallery.get(position).mContent, 0, gallery.get(position).mContent.length);
        im.setImageBitmap(bm);

        int width = 0;
        int height = 0;

        if (bm.getHeight() < bm.getWidth()) {
            width = getWindowManager().getDefaultDisplay().getWidth();
            height = bm.getHeight() * width / bm.getWidth();
        }
        else {
            height = getWindowManager().getDefaultDisplay().getHeight();
            width = bm.getWidth() * height/ bm.getHeight();
                }

        Gallery.LayoutParams lp = new Gallery.LayoutParams(width, height);
        im.setLayoutParams(lp);

        return im;
}

如果你们中的任何一个人明白为什么我真的应该知道答案,

1 个答案:

答案 0 :(得分:4)

画廊强制所有儿童拥有相同的尺寸。此外,每次调用getView()时都会创建一个新视图,这是一个糟糕的主意。当它不为null时,你应该使用convertView。 Gallery中目前缺少一项功能,因此convertView始终为null,但要在未来的Android版本中受益,请使用convertView。这也是一个很好的做法,你必须在你写的每个适配器中应用。