【发布时间】:2013-06-08 10:10:10
【问题描述】:
我需要一个建议...我想创建自定义视图组,该视图组将根据该视图的大小具有不同的布局。
一个例子:
两个视图:
- 视图 A:高度至少为 50dp 的子视图
- 视图 B:我的自定义视图,它扩展了垂直方向的 LinearLayout,高度为 200 dp
我想要什么:
- 当我将 2 个视图 A 插入到视图 B 中时:
- 我想将这两个视图 A 拉伸到 100 dp。所以 B 将是具有 2 个孩子的常见线性布局。
- 当我将 5 个视图 A 插入到视图 B 中时:
- 我想将滚动视图添加到 B 中。所有 5 个视图 A 都将在此滚动视图中,它们的高度为 50 dp。
通常,我在构造函数中将视图添加到自定义视图。但我不能在这里做,因为我不知道构造函数中 B 的高度。我只知道 A 的高度。所以请告诉我应该使用哪种回调方法...当 B 的高度已知时,我可以根据此高度添加所有子视图。
或者如果您知道任何其他方法...请告诉我...
非常感谢!
【问题讨论】:
-
如果 B 的高度应该是 const,那么只需检查孩子 A 的共同高度。如果聚合高度会更多,那么 200(或 4+ 视图) - 在 B 内创建一个 ScrollView 并将您的 A 视图推入其中,然后以编程方式将 ScrollView 的布局参数设置为 match_parent。否则(如果 A 仅查看 1-3 个)- 将它们 layout_weight 参数设置为 1。
-
这正是我想要的。但我不知道什么时候会知道值 200,即覆盖哪种方法。 B 的高度不是 const 高度,而是取决于屏幕尺寸。正如我所写:构造函数中不知道此值...感谢您的回复...