4

我通过将其可见性设置为从 gridview 隐藏一个孩子View.GONE。问题是,即使我将它设置为 GONE,它也会变得不可见,但仍然存在它所在的位置。

是否可以重新排列gridview,使隐藏的元素不占用布局中的任何空间?

<GridView
    android:id="@+activity_queues/gv_queue1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:columnWidth="200dp"
    android:horizontalSpacing="10dp"
    android:numColumns="auto_fit"
    android:padding="10dp"
    android:stretchMode="none"
    android:verticalSpacing="10dp" >
</GridView>
4

3 回答 3

2

要从 GridView 中删除单个项目,您必须将其从适配器或 GridView 的数据源中删除。正如您所发现的,因为更改单元格的可见性不会重新排列您的布局,它只会显示该项目的空白单元格。

于 2012-07-27T20:50:26.247 回答
0

我自己也在努力解决这个问题。奇怪的是,文档提供了这个确切的场景,但是,经过试验,它不起作用:

https://developer.android.com/reference/android/widget/GridLayout.html

它指出:

“出于布局目的,GridLayout 将可见性状态为 GONE 的视图视为宽度和高度为零。这与忽略完全标记为 GONE 的视图的策略略有不同。例如,如果一个标记为 GONE 的视图是单独的在一个列中,当且仅当在视图上没有定义重力时,该列本身将折叠为零宽度。如果定义了重力,则标记为消失的视图对布局没有影响,并且容器的布局应该像视图从未添加到其中。在多余的空间分配期间,GONE 视图的权重为零。这些语句同样适用于行和列,以及行或列组。

有人找到更好的解决方案了吗?

于 2018-04-20T10:33:46.977 回答
-1

GONE 应该完全删除它,根据文档和我的经验,它不再占用任何空间。那么,如果是,那么可能是由于 GridView 上方和下方元素的填充或边距?

于 2012-07-27T20:41:46.840 回答