0

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

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

  1. 用一个GridView
  2. 使用嵌套LinearLayout实例
  3. 用一个TableLayout

我想要一个布局

  1. 自动适应方向变化(就像GridView这样)
  2. 使用所有可用的屏幕空间(就像嵌套LinearLayout实例一样)
  3. 不允许滚动(并且没有“不能再滚动”的效果GridView
  4. 允许我在我的所有物品上强制使用相同的尺寸

默认情况下,GridView具有滚动功能并且不会填满屏幕,而LinearLayout不会TableLayout自动适应方向变化。

目前我正在使用GridView禁用滚动自定义适配器,它根据方向和容器的高度设置项目视图的最小高度以强制填充屏幕。这可行,但感觉就像一个非常丑陋的黑客。

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

这似乎是一个常见的目标(1 , 2 , 3 , 4),但所有建议的解决方案要么像我的一样老套,要么不满足我的一些要求。

由于我是 Android 开发的新手,我不确定我是否遗漏了一些东西。

实现这一点的最佳方式是什么?

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

4

1 回答 1

1

使用 GridView

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

使用嵌套的 LinearLayout 实例

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

使用表格布局

另外一个选项。使用stretchColumns宽度选项和weight高度TableRows选项。

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

没有最优的方式,以上两种方案都可以,也可以 自己做布局

于 2013-03-23T17:27:33.130 回答