Подтвердить что ты не робот

Почему в моем Android GridView есть дополнительные пиксели?

У меня есть GridView в моем приложении для Android, в котором есть несколько ImageViews. Пространство на моем экране ограничено, и я хочу, чтобы изображения занимали столько свободного места, сколько могут. К сожалению, GridView всегда оставляет 5 пикселей пустого экрана вокруг внешнего края ImageViews (пространство между ImageViews устанавливается с горизонтальным/вертикальным интервалом и ведет себя корректно). Пустое пространство действует как маржа вокруг ImageViews, но я не могу избавиться от него. Кто-нибудь знает, что вызывает эту "границу" и как я могу избавиться от нее (или хотя бы уменьшить ее)? Спасибо.

Обновление. Я создаю ImageViews, раздувая XML файл в методе getView() моего класса Adapter. Здесь xml я раздуваю:

<ImageView
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:background="#FF00FF" />

Я определил GridView в моем XML файле макета следующим образом:

<GridView
   android:id="@+id/mygrid"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:layout_above="@+id/abutton"
   android:layout_marginBottom="8dp"
   android:numColumns="5" android:background="#FF0000"/>

Вот скриншот проблемы. Красная область в моем GridView. Фиолетовые области - это мои ImageViews. Отображаемое изображение представляет собой простой синий прямоугольник с прозрачным центром. Изображение составляет 45x45 пикселей (но только 30x30 пикселей в моем приложении - я буду беспокоиться об этом позже). Красная рамка вокруг фиолетового - это то, что я пытаюсь устранить.

alt text

4b9b3361

Ответ 1

Спасибо за советы всем, но, оказывается, ответ был где-то, чего мы не ожидали. Дополнительные пиксели были вызваны селектором, который был назначен моему GridView. Я думаю, что селектор по умолчанию - это 9-патч-образ, который имеет 5-пиксельную рамку вокруг него. Когда я создал и назначил 9-патч с меньшими границами (или без каких-либо границ вообще - просто обычный .png файл), дополнительное пространство в моем GridView ушло.

Ответ 2

Вы пытались установить padding в ImageView и horizontalSpacing и verticalSpacing в GridView на 0?

Ответ 3

Попробуйте установить layout_height и layout_width изображения для fill_parent.

iv.setLayoutParams(ViewGroup.LayoutParams(ViewGroup.MATCH_PARENT, ViewGroup.MATCH_PARENT));

будет делать это динамически, я считаю.

Ответ 4

Мне ничего не помогло, кроме установки атрибута android:columnWidth в xml (например android:columnWidth="50dp")