【问题标题】:How to remove the space between rows of grid view in android如何在android中删除网格视图行之间的空间
【发布时间】:2012-02-03 07:15:47
【问题描述】:

在 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 设备/模拟器中。

【问题讨论】:

    标签: android android-gridview


    【解决方案1】:

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

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

    android:adjustViewBounds="true"
    

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

    【讨论】:

    • 你是把它添加到 grivview 还是 grid 项目中?它似乎对我不起作用:(
    • 将此添加到 imageview,为我工作...谢谢 Dipali
    • 重要提示:就像 Anchit 提到的,这应该放在 imageview 中。
    • 嗨,Dipali 它不适合我...你能告诉我如何解决这个问题吗?在我的情况下,我有 2 列,我不希望图像之间有任何空间 ...
    • 但是 xml 文件在哪里?在 GridView 或其他任何地方??
    【解决方案2】:

    只需将最后 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"/>
    

    【讨论】:

      【解决方案3】:

      在你的 getView() 方法中加入下面一行...

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

      希望对你有帮助。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 即使我将其更改为倾斜,它也会显示行之间的空间,并且概率大约是垂直间距
        • 放置在网格中的视图的高度定义了网格的高度。与您的重力设置为“顶部”的混合是导致您的网格看起来像这样的原因。
        【解决方案5】:

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

        还要仔细检查您是否提供 column_width 作为 50dip 但您的 "imageview's" 宽度是 145 dip

        【讨论】:

        • 是的,我已经尝试了所有改变图像视图高度和宽度的方法,并且图像来自服务器,这就是为什么没有背景或 src 图像
        【解决方案6】:
        <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>
        

        【讨论】:

        • 请提供简要说明,而不是仅提供代码。
        • android:scaleType="fitXY" 是有助于解决问题的属性
        【解决方案7】:

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

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

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

        【讨论】:

          【解决方案8】:

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

          只需传递 SpanCount 的数量,就像我在 GridLayoutManager(this, 6) 中给出的 6 一样,然后更改 SpanCount 以减少或增加回收站视图。

          检查此示例代码-

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

          希望这将是有用的。 谢谢

          【讨论】:

            猜你喜欢
            • 2023-03-27
            • 2017-01-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-05-30
            • 1970-01-01
            • 1970-01-01
            • 2021-07-17
            相关资源
            最近更新 更多