【问题标题】:Android gridview, how to remove the gaps between grid itemsAndroid gridview,如何消除网格项之间的间隙
【发布时间】:2011-09-30 16:00:46
【问题描述】:

我正在尝试使用 GridView 来实现马赛克效果。网格项都是图像,类似于 APIDemo 示例中的 Gri 2。问题是图像之间总是存在间隙,即使所有填充和间距都设置为 0。我是否错过了一些其他设置来消除间隙?我希望图像彼此相邻。

我将列宽设置为 120dip。这是我将图像宽度设置为 120dip 的代码:

mTileWidth = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 120, r.getDisplayMetrics());

有问题吗?

谢谢!

【问题讨论】:

  • 我尝试了答案中提到的方法,但它们不起作用。正如问题中提到的,我已经尝试将间距和间隙设置为 0。将它们设置为负数也无济于事。最后,我只得到了屏幕宽度并将它们除以 4 并将其用作 imageView 宽度(我有 4 个连续的图像作为要求),它似乎工作。我说出现是因为在我看来,当按下其中一个时,图像视图会有点重叠。

标签: android layout gridview


【解决方案1】:

这是一个非常古老的问题,我回答它只是为了提高我的接受率:) 最后我只是计算了屏幕宽度并除以列数,并将结果用作一项的宽度。我要连续。这解决了问题。 mmmmm5 的回答也许是正确的,gap 是 android 添加的 padding,我们只需要绕过它。

【讨论】:

    【解决方案2】:

    如果您查看 Android 的联系人源代码,则会创建一个自定义 GridView 类。快速查看,有填充设置等。也许,这回答了你的问题

    【讨论】:

      【解决方案3】:

      还有另一种可行的解决方案。从GridView的适配器中的getView()方法返回视图时,您必须设置布局参数如下:

      view.setLayoutParams(new GridView.LayoutParams(
          TableLayout.LayoutParams.MATCH_PARENT, 
          TableLayout.LayoutParams.MATCH_PARENT));
      

      【讨论】:

        【解决方案4】:

        如果您的适配器中没有添加填充,请查看您的 XML。查看 android:stretchMode 以及 android:verticalSpacing 和 android:horizo​​ntalSpacing。

            <GridView xmlns:android="http://schemas.android.com/apk/res/android" 
                android:id="@+id/gridview"
                android:layout_width="fill_parent" 
                android:layout_height="fill_parent"
                android:columnWidth="14dp"
                android:numColumns="auto_fit"
                android:verticalSpacing="10dp"
                android:horizontalSpacing="10dp"
                android:stretchMode="columnWidth"
                android:gravity="center"
            />
        

        【讨论】:

          【解决方案5】:

          或者更简单,在我的单元格的xml中,我将以下参数放在根视图上

              android:layout_width="match_parent"
              android:layout_height="match_parent"
          

          然后像这样设置我的gridview:

             <GridView
              android:id="@+id/gridview_type"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:stretchMode="columnWidth"
              android:numColumns="3"
              tools:listitem="@layout/cell_type"
              />
          

          【讨论】: