我通过将其可见性设置为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>
答案 0 :(得分:2)
要从GridView中删除单个项目,必须将其从适配器或GridView的数据源中删除。因为,正如您所发现的那样,更改单元格的可见性不会重新排列布局,它只会显示该项目的空白单元格。
答案 1 :(得分:0)
我自己也在努力解决这个问题。奇怪的是,文档提供了这个确切的场景,但在实验之后,它不起作用:
https://developer.android.com/reference/android/widget/GridLayout.html
它声明:
“出于布局目的,GridLayout将可见性状态为GONE的视图视为零宽度和高度。这与忽略标记为GONE的视图的策略略有不同。例如,如果标记视图在列中是单独的,当且仅当视图上没有定义重力时,该列本身会折叠为零宽度。如果定义了重力,那么标记为视图的视图对布局和容器没有影响应该布置好像从未添加过视图一样。在过多的空间分布期间,GONE视图的重量为零。 这些语句同样适用于行和列,以及行或列组。“
有没有人找到更好的解决方案?
答案 2 :(得分:-1)
GONE应该完全删除它,根据文档和我的经验,它不再占用任何空间。那么,如果是,则可能是由于GridView上方和下方元素的填充或边距?