12

这件事已经让我头疼了一段时间,我似乎无法解决它。

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

我知道这已经在这里被几次 ,其中一些甚至已经接受了答案,但是,当我尝试按照上面 URL 的描述起诉答案时,我仍然在顶部和底部得到相同的额外空格。

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

这是我的一些代码:

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

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

  • @空值
  • @drawable/solid_white
  • @android:id/空

这是顶部和底部额外空间的外观(侧面的空间是我如上所述添加的空间):

在此处输入图像描述

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

提前致谢,

4

4 回答 4

24

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

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

于 2011-11-21T11:40:07.433 回答
9

如果没有另外设置,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"

具有 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" />
于 2011-11-13T00:13:50.173 回答
1

我找到了一个简单的方法来绕过这个。只需添加android:layout_marginRight您的GridView.

于 2012-09-13T07:30:06.533 回答
-1

第1步:

android:stretchMode="none"
android:numColumns="auto_fit"
android:gravity="center"

第 2 步:在 onMeasure 中返回您计算的宽度和高度

于 2013-07-16T01:04:24.367 回答