全屏表格布局

时间:2013-03-23 17:07:13

标签: android android-layout

我有12个基本相同的视图,我想在一个覆盖整个屏幕的网格中排列。根据设备的方向,我想使用3x4或4x3网格。

据我了解,这个主题基本上有三种方法:

  1. 使用GridView
  2. 使用嵌套的LinearLayout实例
  3. 使用TableLayout
  4. 我想要一个

    的布局
    1. 自动适应方向更改(如GridView所做的那样)
    2. 使用所有可用的屏幕空间(作为嵌套的LinearLayout个实例)
    3. 不允许滚动(并且没有“不能滚动GridView的任何进一步”效果
    4. 允许我在所有项目上强制使用相同的尺寸
    5. 默认情况下,GridView已滚动且未填满屏幕,而LinearLayoutTableLayout则无法自动适应方向更改。

      目前,我正在使用GridView disabled scrollingcustom adapter,根据方向和容器的高度设置项目视图的最小高度,以强制填充屏幕。这可行,但感觉就像一个非常难看的黑客。

      根据方向动态构建嵌套的LinearLayout实例可能也有效,尽管我没有尝试过。

      这似乎是一个常见的目标(1234),但所有建议的解决方案要么像我的一样坚硬,要么就是'满足我的一些要求。

      由于我是Android开发的新手,我不确定我是否遗漏了某些内容。

      实现此目标的最佳方式是什么?

      我的目标是API级别8及以上。

1 个答案:

答案 0 :(得分:1)

  

使用GridView

GridView是一个小部件,当您希望以类似网格的方式显示数据并使用更大的数据集时,您将使用该小部件(因为GridView的回收机制将提供更高的性能而不是正常的建立层次结构)。这不是你的情况,因为你希望从一开始就可以看到所有的视图,从我的观点来看,GridView的开销并不值得。

  

使用嵌套的LinearLayout实例

一个不错的选择,但避免嵌套权重。您可以使用两个LinearLayout在最长方向(纵向为纵向,横向为横向)上放置权重,放置在RelativeLayout中,并带有居中的锚点视图。

  

使用TableLayout

另一种选择。宽度使用stretchColumns选项,weight使用TableRows作为高度。

  

根据设备的方向,我想使用3x4或4x3   网格。实现这个的最佳方式是什么?

没有一种最佳方式,可以使用上述任何一种解决方案,您也可以使用make your own layout