38

我正在开发一个预订引擎安卓应用程序,比如航空公司预订系统。为了获取特定于乘客搜索的所有可用航空公司的内容,然后将其显示在移动设备的屏幕上。

考虑到屏幕加载时间、系统内存消耗和附加功能,表格布局或网格布局哪一个更有效?

4

7 回答 7

34

**编辑:写此答案时此行是正确的,但不再适用于所有 Android 设备的 99.9%+:There is no GridLayout in the Android API.**

(注意:从 API 级别 14 开始,终于有了 GridLayout;请参阅下面的答案。此外,V7 支持库将 GridLayout 支持添加到 API 7。但是,此答案对 GridView 的描述仍然准确且说明得很好。)

如果你的意思是 GridView,TableLayout 和 GridView 是完全不同的东西。

GridView 基本上类似于 ListView,但其项目以严格的网格排列。它附加到适配器,并从适配器中检索视图,让用户滚动浏览它。网格中的所有元素必须具有相同的大小。用户可以通过每个项目移动一个可见的选择器—— GridLayout 的目标是显示来自适配器的数据并让用户导航和选择每个显示的项目。与 ListView 的唯一区别是项目被放置在网格中而不是垂直列表中。

TableLayout 只是一个布局管理器,有点像 HTML 中的表格。它本身不做任何滚动;要让某些东西滚动,您必须将 TableLayout 放在 ScrollView 中。这意味着您显示的所有数据必须预先填充到 TableLayout 中,因此 ScrollView 知道要滚动的总空间。它也不会直接为您提供每个“项目”的选择或交互,因为TableLayout 没有项目,它只是一个布局管理器。

您实际上并没有提供足够有用的信息来说明您实际尝试做的事情,以便任何人推荐使用什么。这在很大程度上取决于您具体想要什么。

我的意思是在“附加功能”方面会有什么用处?!?那么你在寻找什么功能!

无论如何,作为一般规则,基于适配器的视图应该用于用户滚动视图的大量数据的任何情况;这比必须预先创建整个视图层次结构来显示数据要高效得多。它们也是唯一自动提供按项目选择和其他此类功能的产品。应用程序使用的主要视图是 ListView,但也可以使用 GridView。

于 2011-08-17T07:03:04.233 回答
22

从 android 4.0 开始,就有了GridLayout之类的东西。GridLayout 总是比 TableLayout 更可取。它提供了您在 TableLayout 上已有的所有内容,并且也可以替换其他布局。

它看起来很酷,而且 Google 似乎希望它像 LinearLayout 一样流行(根据他们的 Android 4.0 视频)。


编辑:如果您必须显示很多项目,请考虑将 RecyclerView 与 GridLayoutManager 一起使用。这可以在内存和 CPU 使用方面有所帮助。

于 2012-01-07T15:40:14.260 回答
10

TableLayout 配置通常很容易适应,因为 GridLayout 支持行和列跨越。可以删除 TableRows,因为 GridLayout 不需要它们。对于相同的 UI,GridLayout 通常比 TableLayout 更快并且占用更少的内存。

所有android版本都支持TableLayout,而GridLayout需要11级(Android ICS 4.0)或更高版本,但可以通过支持库v7轻松添加以支持7级(Android 2.1)或更高版本

于 2013-10-23T11:09:10.337 回答
4

这是 GridLayout 的一个很好的介绍,它还概述了与 TableLayout 相比的差异:http: //blog.stylingandroid.com/archives/669

然而,最重要的区别之一是它仅在 ICS(冰淇淋三明治)和更新版本中可用。这目前意味着不到 30% 的市场份额,因此对于大多数开发人员来说,答案是:等几年再使用 GridLayout。当然是 YMMV。

于 2012-11-20T20:14:20.113 回答
2

我认为GridView应该更好地工作,因为它是通过视图回收和继承自AbsListView. GridView部署起来更困难,因为您必须使用 withAdapter但如果您有很多沉重的视图要加载,例如图像,它将有效地工作

于 2011-08-17T06:53:29.440 回答
0

在网格布局中,组件可以通过 numcolumns="autofit" 自动设置为视图。在这里我们不需要设置我们需要多少行和列,但是在表格布局中,我们没有这种选项,我们必须设置我们需要多少行和列。在表格布局中,如果不使用相对布局,我们不能在一行中插入超过 1 个项目

于 2013-03-04T19:04:48.580 回答
-3

I think a TableLayout would be more easy to use. For a GridLayout you need to build custom adapters and so one which result in a more complicated application.

Looking at different sceensizes, a GridLayout will choose a good number of columns and rows by itself according to the content and it will be more flexible with adding items.

Also the GridLayout will be more flexible but it is some more work to make.

于 2011-08-17T06:46:30.043 回答