为什么我的Android GridView周围有额外的像素?

A.J*_*.J. 35 android gridview imageview

我的Android应用程序中有一个GridView,其中包含许多ImageView.屏幕上的空间有限,我希望图像尽可能多地占用可用空间.不幸的是,GridView总是在ImageViews的外边缘留下5个像素的空屏幕空间(ImageViews之间的空间设置为水平/垂直间距并且行为正确).空白空间有点像ImageViews的边缘,但我无法摆脱它.有谁知道是什么导致了这个"边界"以及我如何摆脱它(或者至少让它变小)?谢谢.

更新:我通过在Adapter类的getView()方法中膨胀.xml文件来创建ImageViews.这是我正在膨胀的xml:

<ImageView
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:background="#FF00FF" />
Run Code Online (Sandbox Code Playgroud)

我在我的布局xml文件中定义了GridView,如下所示:

<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"/>
Run Code Online (Sandbox Code Playgroud)

这是问题的屏幕截图.我的GridView中的红色区域.紫色区域是我的ImageViews.显示的图像是一个简单的蓝色矩形,中心是透明的.图像是45x45像素(但我的应用程序只有30x30像素 - 稍后我会担心).紫色周围的红色边框是我想要消除的.

替代文字

A.J*_*.J. 67

感谢大家的建议,但事实证明答案是我们没想到的.额外的像素是由分配给我的GridView的选择器引起的.我猜默认选择器是一个9补丁图像,它周围有一个5像素的边框.当我创建并分配一个具有较小边框(或根本没有边框 - 只是一个普通.png文件)的9补丁时,我的GridView中的额外空间消失了.

  • @Janusz正确,在某些设备上`@android:id/empty`会导致崩溃.`@android:color/transparent`似乎是正确的选择. (30认同)
  • 或者,使用`@ null`完全省略列表选择器. (13认同)
  • +1,你救了我至少4个小时的试错.看来在这种情况下指定"无图像"的简洁方法是`android:listSelector ="@ android:id/empty"` (10认同)