网格布局与表格布局

时间:2011-08-17 06:41:09

标签: android tablelayout grid-layout

我正在开发预订引擎Android应用程序,如航空公司预订系统。要获取特定于乘客搜索的所有可用航空公司的内容,这将显示在手机屏幕上。

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

7 个答案:

答案 0 :(得分:33)

**编辑:撰写此答案时此行正确,但不再适用于所有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。

答案 1 :(得分:20)

从android 4.0开始,就有GridLayout这样的东西。 GridLayout始终优于TableLayout。它提供了TableLayout上已有的所有内容,也可以替换其他布局。

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


编辑:如果你必须展示很多项目,可以考虑使用RecyclerView和GridLayoutManager。这有助于内存和CPU使用。

答案 2 :(得分:10)

  

TableLayout配置通常很简单   适应,因为GridLayout支持行和列跨越。   可以删除TableRows,因为GridLayout不需要它们。对于   在相同的UI中,GridLayout通常会更快并且占用更少   记忆而不是TableLayout。

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

答案 3 :(得分:4)

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

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

答案 4 :(得分:2)

我认为GridView应该更好用,因为它是通过视图回收和从AbsListView继承的东西来实现的。 GridView部署起来比较困难,因为你必须使用Adapter,但如果你有很多很重的视图要加载,那么它会很有效率

答案 5 :(得分:0)

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

的情况下连续插入多于1个项目

答案 6 :(得分:-3)

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

查看不同的sceensize,GridLayout将根据内容自行选择大量的列和行,并且在添加项目时会更灵活。

GridLayout也会更灵活,但还需要做更多的工作。