我正在开发预订引擎Android应用程序,如航空公司预订系统。要获取特定于乘客搜索的所有可用航空公司的内容,这将显示在手机屏幕上。
考虑到屏幕加载时间,系统内存消耗和其他功能,哪一个,表格布局或网格布局会有效?
答案 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也会更灵活,但还需要做更多的工作。