如何删除android中网格视图行之间的空格

时间:2012-02-03 07:15:47

标签: android android-gridview

在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>

在Adapter类中,代码是

        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 devices / emulator中。

Image for reference. this is what happening right now.

8 个答案:

答案 0 :(得分:38)

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

要解决此问题,我需要在我的xml文件中添加1行

android:adjustViewBounds="true"

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

答案 1 :(得分: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"/>

答案 2 :(得分:0)

将以下行放在你的getView()方法中......

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

我希望这会对你有所帮助。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

检查您的“newsgridthumbpic”布局是否包含额外的填充或任何背景图像,其高度与网格视图元素相同。

另外请仔细检查您提供的 column_width 50dip ,但“imageview的”宽度 145 dip

答案 5 :(得分:0)

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

(例如:android:verticalSpacing =&#34; -10dp&#34;)

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

答案 6 :(得分: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>

答案 7 :(得分: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);

希望这会很有用。 谢谢