2011-08-17 190 views
31

我正在处理预订引擎android应用程序,如航空公司预订系统。要获取特定于乘客搜索的所有可用航空公司的内容,该信息将显示在移动设备的屏幕上。网格布局VS.表布局

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

回答

-3

我认为TableLayout会更容易使用。对于GridLayout,您需要构建自定义适配器,因此导致更复杂的应用程序。

看看不同的sceensizes,GridLayout会根据内容自行选择很多列和行,添加项目会更加灵活。

此外,GridLayout将更加灵活,但它是一些更多的工作。

+7

给出这个答案-1,因为它是完全错误的。 GridLayout不需要适配器...您正在考虑GridView ....以下是GridLayout的文档:https://developer.android.com/reference/android/widget/GridLayout.html – Justin

2

我认为GridView应该更好地工作,因为它是从视图回收和从AbsListView继承的东西实施。 GridView更难部署,因为您必须使用Adapter,但如果您有很多沉重的视图来加载,如图像

30

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

(注:由于API 14级的,还有最后的网格布局;请参阅下面的答案此外,V7支持库增加了网格布局的支持下到API 7.但是,对GridView的这个回答的描述仍然准确并且很好陈述。)

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

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

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

你实际上并没有提供足够的有用信息,说明你实际上试图为任何人推荐使用什么。这取决于你想要的具体内容。

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

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

+75

由于** API级别14 **(冰淇淋三明治),有一个[GridLayout](http://developer.android.com/reference/android/widget/GridLayout.html)。 –

+7

API LEVEL 14支持Gird布局和空间布局。请参阅此链接http://android-developers.blogspot.in/2011/11/new-layout-widgets-space-and-gridlayout.html – bapatla

+5

V7(API级别7 - 2.1)android支持库有GridLayout。 –

17

由于安卓4.0,有这样的事情作为GridLayout。 GridLayout总是比TableLayout更可取。它提供了TableLayout上已有的所有功能,并且可以替换其他布局。

看起来很酷,Google似乎希望它像LinearLayout一样受欢迎(根据Android 4.0的视频)。


编辑:如果你必须展示很多项目,考虑使用RecyclerView和GridLayoutManager。这可以在内存和CPU使用率方面提供帮助。

+0

@ToolmakerSteve问题是关于有一个网格布局视图,但当时还没有,所以当它可用时,我写道你可以用它作为他的问题的解决方案。当然,如果有大量的项目要显示,带GridLayoutManager的RecyclerView会更合适(稍后也会添加)。由于其奇怪的行为和烦人的用法,TableLayout几乎从未被使用过。 –

3

这是网格布局的一个很好的演示文稿,其中还列出相比TableLayout的差异: http://blog.stylingandroid.com/archives/669

其中一个最重要的区别不过是,它只是在ICS(冰淇淋三明治)和更新可用。目前这意味着不到30%的market share,所以对于大多数开发人员来说,答案是:在使用GridLayout之前等待几年。 YMMV当然。

+2

它被添加到V7支持库。 –

+1

链接http://blog.stylingandroid.com/archives/669已损坏。 @johndodo如果你知道更新的链接,将不胜感激。 –

+1

我已将链接更改为网络存档。请注意,你可以自己做同样的事,谢谢指出它。 – johndodo

0

在网格布局中,组件可以通过采用numcolumns =“autofit”自动设置为视图。在这里我们不需要设置我们需要多少行&列,但是在表格布局中,我们没有这种类型的选项&,我们必须设置我们需要多少行&列。 在表格布局,我们不能在一排,而无需使用相对布局

9

TableLayout配置插入多于1个项目通常是直接地 容纳,如GridLayout的同时支持行和列跨越。 TableRows可以被删除,因为GridLayout不需要它们。对于 相同的用户界面,GridLayout通常会比TableLayout更快,占用的内存也更少。

TableLayout支持所有的Android版本,而GridLayout的需要电平11(的Android ICS 4.0)或更高,但它可以通过支持librarry V7被容易地添加到支持7电平(的Android 2.1)或更高