• 6
name

A PHP Error was encountered

Severity: Notice

Message: Undefined index: userid

Filename: views/question.php

Line Number: 191

Backtrace:

File: /home/prodcxja/public_html/questions/application/views/question.php
Line: 191
Function: _error_handler

File: /home/prodcxja/public_html/questions/application/controllers/Questions.php
Line: 433
Function: view

File: /home/prodcxja/public_html/questions/index.php
Line: 315
Function: require_once

name Punditsdkoslkdosdkoskdo

Why are there extra pixels around my Android GridView?

I have a GridView in my Android application that has a number of ImageViews in it. The space on my screen is limited and I want the images to take up as much of the available space as they can. Unfortunately, the GridView always leaves 5 pixels of empty screen space around the outside edge of the ImageViews (the space between ImageViews is set with horizontal/vertical spacing and behaves correctly). The empty space acts kind of like a margin around the ImageViews, but I can't get rid of it. Does anyone know what's causing this "border" and how I can get rid of it (or at least make it smaller)? Thanks.

Update: I'm creating the ImageViews by inflating an .xml file in the getView() method of my Adapter class. Here's the xml I'm inflating:

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

I defined the GridView in my layout xml file like this:

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

Here's a screen shot of the problem. The red area in my GridView. The purple areas are my ImageViews. The image being displayed is a simple blue rectangle with a transparent center. The image is 45x45 pixels (but is only 30x30 pixels in my app - I'll worry about that later). The red border around the purple is what I am trying to eliminate.

alt text

Thanks for the advice everyone, but it turns out the answer was somewhere that we didn't expect. The extra pixels were caused by the selector that was assigned to my GridView. I guess the default selector is a 9-patch image that has a 5 pixel border around it. When I created and assigned a 9-patch that had smaller borders (or no borders at all - just a normal .png file) the extra space in my GridView went away.

  • 67
Reply Report
      • 2
    • +1, you saved me at least 4 hours of trial&error. It appears that a clean way to specify "no image" in this situation is android:listSelector="@android:id/empty"
      • 2
    • @mvds android:listSelector="@android:id/empty" caused an exception. It seems that the GridView can not handle this listSelector. I set the selector to a transparent color instead.
      • 2
    • @Janusz correct, on some devices @android:id/empty leads to a crash. @android:color/transparent seems to be the right choice.

Did you try setting the padding on the ImageView and the horizontalSpacing and verticalSpacing on the GridView to 0?

  • 0
Reply Report
      • 1
    • Thanks. I've tried that. Doesn't seem to be helping. I updated my original post to include the code for my GridView and ImageViews.
      • 2
    • I managed to set the background color of my controls, so that I can see who owns the screen space (see my edited question). The GridView is the owner, but changing padding doesn't reduce the owned area (although it can expand it).
      • 2
    • Sorry, not sure what else to change.. It feels like some combination of padding, margin, spacing, etc., has to do the trick..

Try setting the layout_height and layout_width of the image view to fill_parent.

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

will do it dynamically, I believe.

  • 0
Reply Report