我有12个基本相同的视图,我想在一个覆盖整个屏幕的网格中排列。根据设备的方向,我想使用3x4或4x3网格。
据我了解,这个主题基本上有三种方法:
GridView
LinearLayout
实例TableLayout
我想要一个
的布局GridView
所做的那样)LinearLayout
个实例)GridView
的任何进一步”效果默认情况下,GridView
已滚动且未填满屏幕,而LinearLayout
和TableLayout
则无法自动适应方向更改。
目前,我正在使用GridView
disabled scrolling和custom adapter,根据方向和容器的高度设置项目视图的最小高度,以强制填充屏幕。这可行,但感觉就像一个非常难看的黑客。
根据方向动态构建嵌套的LinearLayout
实例可能也有效,尽管我没有尝试过。
这似乎是一个常见的目标(1,2,3,4),但所有建议的解决方案要么像我的一样坚硬,要么就是'满足我的一些要求。
由于我是Android开发的新手,我不确定我是否遗漏了某些内容。
实现此目标的最佳方式是什么?
我的目标是API级别8及以上。
答案 0 :(得分:1)
使用GridView
GridView
是一个小部件,当您希望以类似网格的方式显示数据并使用更大的数据集时,您将使用该小部件(因为GridView
的回收机制将提供更高的性能而不是正常的建立层次结构)。这不是你的情况,因为你希望从一开始就可以看到所有的视图,从我的观点来看,GridView
的开销并不值得。
使用嵌套的LinearLayout实例
一个不错的选择,但避免嵌套权重。您可以使用两个LinearLayout
在最长方向(纵向为纵向,横向为横向)上放置权重,放置在RelativeLayout
中,并带有居中的锚点视图。
使用TableLayout
另一种选择。宽度使用stretchColumns
选项,weight
使用TableRows
作为高度。
根据设备的方向,我想使用3x4或4x3 网格。实现这个的最佳方式是什么?
没有一种最佳方式,可以使用上述任何一种解决方案,您也可以使用make your own layout。