如何摆脱gridview中的空格

Mar*_*ona 12 android android-gridview

这件事现在已经开始了一段时间,我似乎无法解决它.

我有一个网格视图,其中显示了一些位图.当我通过适配器填充我的图像视图时,我在所有图像边添加了一个5dp的填充(iv.setPadding(5,5,5,5);),但不知何故,每个顶部和底部都添加了更多的空间我的gridview上的项目.

我知道这已经一个 倍这里,有些人甚至已经接受了答案,但是,当我尝试为在URL上的上述起诉的答案,我仍然不断收到对顶部和底部相同的多余的空格.

现在有没有其他方法可以做到这一点?

这是我的一些代码:

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

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

我已经尝试将以下内容添加到main.xml中的listselector属性中

  • @空值
  • @绘制/ solid_white
  • @android:ID /空

以下是顶部和底部多余空间的样子(侧面的那些是我正在添加的如上所述):

在此输入图像描述

关于如何删除那些血腥空间的任何其他想法,以便我的网格视图具有相同的间距?

提前致谢,

Pau*_*aul 24

对我来说,它通过设置imageview.setAdjustViewBounds(true);我的Adapter类解决了这个问题.

似乎我的方形图像在宽度上自动调整大小,但Gridview仍然使用原始高度.通过调整边界,即使启用了默认的拉伸模式,两个尺寸也会自动调整大小并且所有项目都会顺畅显示.


Pet*_*tai 8

如果没有另外设置,GridView将通过以各种方式拉伸事物来覆盖您想象它应该产生的布局.如果要通过定义网格项的列宽和大小来完全控制布局,则必须确保将GridView的stretchMode属性设置为"none".

<GridView
        ...
        android:stretchMode="none">
</GridView>
Run Code Online (Sandbox Code Playgroud)

此外,您使用GridView宽度填充父级.我认为你应该包装宽度的内容,除非你想要额外的填充添加.你在哪里添加5dp填充?围绕每个位图或在gridview的边缘?我没有看到它.

你可能应该填补高度.(在下面的一些宽度和高度可能会被"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"
    />
Run Code Online (Sandbox Code Playgroud)

另外,不确定你是否需要列间距和宽度,这可能是(或dp而不是wrap_content) - 你可能不需要在你的GridView中 - 我不确定:

    android:columnWidth="YYYdp"
    android:horizontalSpacing="0dp"
Run Code Online (Sandbox Code Playgroud)

具有5dp填充的ImageViews:

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

  • 这阻止了我的gridview显示任何东西 (6认同)
  • 我通过适配器填充gridview时将其添加到我的图像中.我试过包装内容,但是当使用android:stretchMode ="none"时,一切都停止了 (5认同)