Почему в моем 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]()
Ответы
Ответ 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"
)