19

在 android 网格视图中,网格视图的行之间有额外的空间。我没有在 gridview 中添加任何空间。

这是我的 xml 文件

        <GridView
                xmlns:android="http://schemas.android.com/apk/res/android"
                android:id="@+id/grid"
                android:layout_width="fill_parent" 
                android:layout_height="fill_parent"
                android:horizontalSpacing="5px"
                android:numColumns="3"
                android:columnWidth="50dip"
                 android:verticalSpacing="0dip"
                android:gravity="center"
                />

并且将视图添加到gridview的imageview的另一个xml是

        <ImageView
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/singlePhoto"
            android:layout_gravity="top"
            android:layout_width="145dip"
            android:layout_height="145dip"
            android:layout_marginTop="0dip"
            android:layout_marginBottom="0dip"
            >
        </ImageView>

在适配器类中,代码是

        if(mView == null){
            mView = mLayoutInflater.inflate(R.layout.newsgridthumbpic, null);
                }

                ImageView mImage = (ImageView)mView.findViewById(R.id.singlePhoto);
                PhotoGridInfoSet mInfo = (PhotoGridInfoSet)details.get(position);
                if(mImage != null){
                mImage.setTag(mInfo.getPhotoThumbNailString());
                mImage.setVerticalScrollBarEnabled(true);
                mImage.setVerticalFadingEdgeEnabled(true);
                }
        }!

空间在gridview的行之间。我没有在代码中的任何地方添加任何空格仍然有垂直间距。我不明白为什么gridview行之间有空格。这个空间没有出现在 hdpi 设备/模拟器中。这个问题在 mdpi 和 ldpi 设备/模拟器中。

图片供参考。 这就是现在正在发生的事情。

4

8 回答 8

42

我得到了这个问题的解决方案。

为了解决这个问题,我需要在我的 xml 文件中添加 1 行

android:adjustViewBounds="true"

并在添加后。空间现在没有出现

于 2012-02-04T16:37:21.520 回答
2

只需将最后两行放在 gridView

<GridView
        android:numColumns="2"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/gridView"
        android:horizontalSpacing="0dip"
        android:verticalSpacing="0dip"/>
于 2016-02-17T13:44:50.700 回答
0

将以下行放入您的 getView() 方法中...

mImage.setPadding(0, 0, 0, 0);

我希望这能帮到您。

于 2012-02-03T07:24:56.803 回答
0

看起来您的图片正在缩放以适应 50dp 的列宽,同时保持纵横比。这在垂直布局中引入了一堆未填充的空间。如果您希望您的列宽 50dp,解决这些间距问题的最简单方法是将您的 imageview 调整为 50dp 的宽度,并与此成比例地调整 imageviews 的高度。

于 2012-02-03T07:25:49.093 回答
0

只需检查您的“newsgridthumbpic”布局是否不包含额外的填充或任何高度超过您的网格视图元素的背景图像。

还要仔细检查您是否将column_width提供为50dip ,但您的“imageview”宽度是145 dip

于 2012-02-03T10:21:11.667 回答
0

在使用RecyclerView时,我有另一种方法可以解决相同的问题。

只需传递SpanCount的数量,就像我在GridLayoutManager(this, 6)中给出的 6 一样,并更改 SpanCount 以减少或增加 RecyclerView 中项目之间的差距。

检查此示例代码-

GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 6);
  rvSizes.setLayoutManager(gridLayoutManager);
  SizeSelectorAdaptersizeChooserAdapter = new SizeSelectorAdapter(this, sizes);
  rvSizes.setAdapter(sizeChooserAdapter);

希望这会有用。谢谢

于 2020-07-03T14:49:24.970 回答
0
<GridView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/grid"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:horizontalSpacing="5px"
    android:numColumns="3"
    android:columnWidth="50dip"
     android:verticalSpacing="0dip"
    android:gravity="center"/>

<ImageView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/singlePhoto"
    android:layout_width="145dip"
    android:layout_height="145dip"
    android:scaleType="fitXY">
</ImageView>
于 2016-02-17T11:28:07.067 回答
0

将 gridview 中的 android:verticalSpacing 设置为负值。将删除垂直空间。

(例如:android:verticalSpacing="-10dp")

用一些数字测试以获得正确的值

于 2015-09-15T13:18:08.773 回答