Android: определение размера (с точки зрения разрешения) GalleryView - PullRequest
1 голос
/ 26 апреля 2011

У меня есть layout, где Gallery height равно WRAP_CONTENT (width is FILL_PARENT) с нижним полем 80dp.Это оставило бы 80dp внизу экрана для чего-то еще.

Проблема в том, как точно узнать, сколько пикселей у меня в height этого Gallery?
Мне это нужно для того, чтобы установить размер bitmap в галерее getView (так как я хочу, чтобы каждое изображение занимало полный экран галереи) Различные устройства должны давать мне разные пиксели высоты ...

Видимо, когда я запрашиваю Gallery.getHeight, он возвращает ноль.

Кроме того, если само изображение меньше, чем порт просмотра галереи, я хочу увеличить его.Однако setScaleType(FIT_CENTER), кажется, только уменьшает (если изображение больше, чем область просмотра), но не увеличивает?Я что-то упустил?

Заранее спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2011

Gallery - это просто еще один View, поэтому любой метод, определенный для View, будет работать.Используйте myGalery.getHeight();

со справочной страницы API View: http://developer.android.com/reference/android/view/View.html

Размер, отступы и поля

Размер представления выражается черезширина и высота.В действительности вид имеет две пары значений ширины и высоты.

Первая пара называется измеренной шириной и измеренной высотой.Эти измерения определяют, насколько большим должно быть представление в пределах его родителя (более подробную информацию см. В разделе «Макет»). Измеренные измерения можно получить, вызвав getMeasuredWidth () и getMeasuredHeight ().

Вторая пара называется простоширина и высота, иногда ширина рисунка и высота рисунка.Эти размеры определяют фактический размер вида на экране, во время рисования и после макета.Эти значения могут, но не обязательно, отличаться от измеренной ширины и высоты.Ширина и высота могут быть получены вызовом getWidth () и getHeight ().

Чтобы измерить его размеры, представление учитывает его заполнение.Заполнение выражается в пикселях для левой, верхней, правой и нижней частей вида.Заполнение может использоваться для смещения содержимого представления на определенное количество пикселей.Например, левый отступ 2 будет сдвигать содержимое представления на 2 пикселя справа от левого края.Заполнение может быть установлено с помощью метода setPadding (int, int, int, int) и запрошено путем вызова getPaddingLeft (), getPaddingTop (), getPaddingRight () и getPaddingBottom ().


Обновление

Будьте осторожны при измерении.Если вы используете его в конструкторе, он вернет ноль, поскольку он еще не нарисован.Если вы абсолютно не уверены, что GridView будет виден к моменту измерения, вы можете измерить, добавив View.OnLayoutChangeListener и введя

public abstract void onLayoutChange (View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) 

http://developer.android.com/reference/android/view/View.OnLayoutChangeListener.html

илипереопределение protected void onSizeChanged (int w, int h, int oldw, int oldh)

0 голосов
/ 26 апреля 2011

вы можете получить общую высоту и удалить 80px из нее, т.е. (ваша высота галереи) получить общую высоту по этому коду

Display display;
display = activity.getWindowManager().getDefaultDisplay(); 
display.getHeight()
...