繁体   English   中英

全屏表格布局

[英]Full-screen tabular layout

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

据我了解,该主题基本上有三种方法:

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

我想要一个布局

  1. 自动适应方向变化(就像GridView一样)
  2. 使用所有可用的屏幕空间(就像嵌套的LinearLayout实例一样)
  3. 不允许滚动(没有GridView “不能进一步滚动”效果)
  4. 允许我在所有物品上施加相同的尺寸

默认情况下, GridView会滚动并且不会填满屏幕,而LinearLayoutTableLayout不会自动适应方向更改。

目前,我正在使用具有禁用滚动功能的GridView自定义适配器 ,该适配器根据方向和容器的高度设置项目视图的最小高度,以强制填充屏幕。 这行得通,但感觉像是一个非常丑陋的hack。

根据方向动态构造嵌套的LinearLayout实例也可能会起作用,尽管我没有尝试过。

这似乎是一个常见的目标( 1234 ),但所有建议的解决方案或者是和我一样的hackish或不符合我的一些要求。

由于我是Android开发的新手,因此不确定是否丢失了某些东西。

实现此目标的最佳方法是什么?

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

使用GridView

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

使用嵌套的LinearLayout实例

一个不错的选择,但要避免嵌套权重。 您可以改为使用两个LinearLayout ,将其在最长方向上的权重(纵向为纵向,横向为横向)放置在带有居中锚视图的RelativeLayout

使用TableLayout

另外一个选项。 stretchColumns选项用于TableRows的宽度和weight ,以获取高度。

根据设备的方向,我想使用3x4或4x3网格。 实现此目标的最佳方法是什么?

没有最优的方法,可以使用上述两种解决方案,也可以自己设计布局

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM