如何在能见度消失后重新排列gridview儿童?

时间:2012-07-27 20:33:44

标签: android gridview

我通过将其可见性设置为View.GONE来隐藏网格视图中的孩子。问题在于,即使我认为它设置为GONE,它也变得无形,但仍然是它所处的位置。

是否可以重新排列网格视图,以便隐藏的元素不占用布局中的任何空间?

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

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

它声明:

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

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

答案 2 :(得分:-1)

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