Я попытаюсь быть максимально ясным.
Здесь, Что я пытаюсь сделать
Программа просмотра изображений, где Изображение было бы дисплеем, столь большим, как они могут на экране устройства. Для этого purspose и для лучшего пользовательского опыта, я думал о Галерее. Непока там все не в порядке!
Проблема
Проблема состоит в том, что в функции getView моего Адаптера, это использует только Галерею. LayoutParams первого Изображения я имею в своей Галерее. Что означает, что, если первое изображение является средой и второй портрет, второй будет дисплеем как средой с тем же размером как первый. Я действительно сбрасываю Галерею. LayoutParams, но это не имеет значения, это все еще имеет LayoutParams первого ImageView.
Код
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;
}
Если бы какой-либо из Вас видит, почему я был бы действительно для знания ответа,
Галерея заставляет всех детей иметь одинаковый размер. Кроме того, вы создаете новый View каждый раз, когда вызывается getView (), и это ужасная идея. Вы должны использовать convertView, если он не равен нулю. В настоящее время в галерее отсутствует функция, поэтому convertView всегда имеет значение null, но, чтобы извлечь выгоду из нее в будущей версии Android, все равно используйте convertView. Это также хорошая практика, которую вы должны применять в каждом адаптере, который вы пишете.