【发布时间】:2019-08-17 22:15:46
【问题描述】:
全部。我试图以最简单的形式将 4 个 Views 打包成两行 2 x 2。每行包含 1 个 ImageView 和 1 个 TextView 而不为 ImageView 放置任何固定尺寸并允许TextView 有多行没有省略号。两者中的任何一个都可以比另一个高。目的是使每对水平的图像和文本水平对齐,并尽可能减少垂直空间。这很容易实现,使用两个水平的LinearLayouts 耦合在一起垂直LinearLayout。这样,两对图像和文本都将水平对齐,并且它们各自的容器水平布局将包装它们以适应它们的内容,因此这两对将占用尽可能少的垂直空间:
上图示意性地显示了 UI 组合场景。绿色的连字符框是水平线性布局,它们都包裹了一对图像和文本显示控件并允许它们水平对齐。红色的连字符框是垂直线性布局包装水平的。
此布局方案只是布局的最简约用例,类似于具有以下配置的类表视图:
- 行数 > 1
- 每行有 > 1 个子视图,每行的子视图数量不同
- 给定行内的所有控件都是水平对齐的
- 根据内容,行的宽度和高度都不同
我看到这可以使用ConstraintLayout 实现的唯一方法是另外有 N-1 (N = 行数) 水平 LinearLayouts 代表除了其中一个只能布局的所有行使用ConstraintLayout 的锚点/约束。使用ContstraintLayout 的指南是不适用的,因为它们与父级边缘的偏移量应该以绝对或相对单位硬编码,我们需要根据每行中的最高视图进行灵活的高度计算。由于要求一行内的所有 UI 控件都应水平对齐,因此也无法使用 ContstraintLayout 的障碍。如果没有,就会有 N-1 个屏障粘在每行顶部对齐的 UI 控件的底部。
关于如何获得具有固定行数并具备上述规范的最高性能的类表视图有什么建议吗?
【问题讨论】:
标签: android alignment android-constraintlayout