【问题标题】:Full-screen tabular layout全屏表格布局
【发布时间】:2013-03-23 17:07:12
【问题描述】:

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

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

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

我想要一个布局

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

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

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

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

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

由于我是 Android 开发新手,我不确定我是否遗漏了什么。

实现此功能的最佳方式是什么?

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

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    使用 GridView

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

    使用嵌套的 LinearLayout 实例

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

    使用表格布局

    另一种选择。使用stretchColumns 选项作为宽度,在TableRows 上使用weight 作为高度。

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

    没有最优方法,以上两种方案都可以,也可以make your own layout

    【讨论】:

    • 感谢您的意见。最后,我最终编写了自己的布局管理器。我正在使用特定于方向的布局 XML 文件在横向和纵向之间切换。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-16
    • 1970-01-01
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    相关资源
    最近更新 更多