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

Spr*_*dzy 6 layout android 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;
}
Run Code Online (Sandbox Code Playgroud)

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

Rom*_*Guy 4

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