Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get rid of spaces in gridview

This thing has been doing my head in for a little while now and I can't seem to be able to solve it.

I've got a grid view, in which I display a few bitmaps. I add a padding of 5dp on all image sides when filling up my image view via the adapter (iv.setPadding(5, 5, 5, 5);), but somehow, there's more space being added to the top and bottom on each item on my gridview.

I know this has already been asked a few times here, and some of them even have accepted answers, however, when I try to sue the answers as described on the URL's above, I still keep getting the same extra spaces on top and bottom.

Is there any other way of doing this nowadays?

Here's some of my code:

Main.xml

<?xml version="1.0" encoding="utf-8"?>
<GridView
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/imageGrid"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:numColumns="6"
    />

grid_item.xml

<?xml version="1.0" encoding="utf-8"?>
<ImageView 
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/grid_item_image"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content" />

I have tried adding the following to my listselector attribute in main.xml

  • @null
  • @drawable/solid_white
  • @android:id/empty

Here's how it looks like with the extra spaces on top and bottom (the ones on the sides are the ones I'm adding as described above):

enter image description here

Any other ideas as to how to get those bloody spaces removed so my grid view has the same spacing?

Thanks in advance,

like image 459
Marcos Placona Avatar asked Nov 13 '11 00:11

Marcos Placona


People also ask

How do you get rid of the space between grid items in flutter?

You can just remove the bottom padding of a GridView using padding: EdgeInsets. zero .

How do you get rid of the top space in flutter?

The GridView widget has a default padding , you can remove the padding by giving it a padding of EgdeInsets. zero .


2 Answers

For me it solved the problem by setting imageview.setAdjustViewBounds(true); in my Adapter class.

It seems that my square images were automatically resized in width but Gridview still used the original hight. By adjusting bounds, both dimensions were resized automatically and all items were displayed smoothly even with default stretchmode enabled.

like image 61
Paul Avatar answered Sep 22 '22 13:09

Paul


If not otherwise set, a GridView will override the layout you're imagining it should produce by stretching things in various ways. If you want to have full control of the layout by defining the column widths and the size of the grid items, then you have to make sure to set the GridView's stretchMode property to "none".

<GridView
        ...
        android:stretchMode="none">
</GridView>

Also, you are filling the parent with your GridView width. I think you should be wrapping the content for the width unless you want extra filling added. Where are you adding the 5dp padding? Around each bitmap or around the edge of the gridview? I don't see it.

You should probably be filling the height though. (in the following some of the width and heights can probably be replaced by "wrap_content")

So, for you

<?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"
    />

Also, not sure if you need column spacing and width, which would be something like (or a dp instead of wrap_content) - you may not need these in your GridView - I'm not sure:

    android:columnWidth="YYYdp"
    android:horizontalSpacing="0dp"

ImageViews with 5dp padding:

<?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" />
like image 20
Peter Ajtai Avatar answered Sep 20 '22 13:09

Peter Ajtai