【发布时间】:2018-10-01 12:06:47
【问题描述】:
我有一个动态的GridView,它应该显示从服务器获取的数据。该数据的长度是可变的。我设置了android:numColumns="4"。现在,如果数据的长度可以被 4 整除,那么我的布局如下所示:
这就是它应该的样子。但是,如果数据的长度不能被 4 整除而是偶数(形式为 4k+2),那么布局如下所示:
我查看了this StackOverflow 问题,很多人建议插入虚拟元素来欺骗 GridView 留下空白空间。这似乎是一个 hack,但我确实实现了我想要的布局:
现在,当数据长度为奇数时,就会出现问题。我默认得到的布局如下:
我想要得到这样的东西:
请注意,前面的解决方法在这里不起作用,因为没有一个完整的额外单元格可以插入虚拟对象。
我可以想出的一个解决方案是将列数更改为 7 并用虚拟节点替换每个备用单元格,除了第一个单元格也是虚拟节点的最后一行。这给了我类似的东西:
即使去掉horizontalSpacing,这些单元格之间的距离也太远了,代码的可读性已经严重受损。现在,我不是在寻找可以减小虚拟单元大小的解决方法。相反,我也想摆脱虚拟单元,因为在我看来,这不是一种有效的方法。
我已经查看了documentation 和GridView,但我找不到与我的问题相关的任何内容。除了上面链接的问题之外,我还查看了 this 和 this StackOverflow 问题,但似乎没有一个问题有有效的答案。我还找到了this GitHub 存储库,作者声称已经修复了这个问题,但我无法重现它。
我很乐意从我的项目中提供代码 sn-ps,但我不认为它们会有用,因为:
- 我正在寻找通用解决方案,而不是针对我的特定情况。
- 我的项目并不像在 GridView 中放置字母那么简单,它包含许多与此问题无关的额外细节,因此已被删除以避免混淆。
【问题讨论】:
-
尝试使用TableLayout:developer.android.com/reference/android/widget/TableLayout
标签: android android-layout gridview