Если не установлено иное, GridView переопределит макет, который вы себе представляете, создавая различные способы растяжения. Если вы хотите получить полный контроль над макетом, определив ширину столбцов и размер элементов сетки, вам необходимо установить для свойства GridView stretchMode значение "none" .
<GridView
...
android:stretchMode="none">
</GridView>
Кроме того, вы заполняете родителя шириной GridView. Я думаю, что вы должны обернуть содержимое для ширины, если вы не хотите добавить дополнительную заливку. Где вы добавляете 5dp отступ? Вокруг каждого растрового изображения или вокруг края сетки? Я этого не вижу.
Вы, вероятно, должны заполнить высоту, хотя.
(в дальнейшем некоторые из ширины и высоты, вероятно, могут быть заменены на "wrap_content")
Итак, для вас
<?xml version="1.0" encoding="utf-8"?>
<GridView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/imageGrid"
android:stretchMode="none"
android:layout_width="XXXdp"
android:layout_height="fill_content"
android:numColumns="6"
/>
Кроме того, не уверен, если вам нужен интервал и ширина столбца, который будет примерно таким (или dp вместо wrap_content) - вам может не понадобиться это в вашем GridView - я не уверен:
android:columnWidth="YYYdp"
android:horizontalSpacing="0dp"
ImageViews с заполнением 5dp:
<?xml version="1.0" encoding="utf-8"?>
<ImageView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/grid_item_image"
android:padding="5dp"
android:layout_width="UUUdp"
android:layout_height="VVVdp" />