无法以编程方式设置GridLayout高度

时间:2019-07-02 15:08:48

标签: ios nativescript nativescript-angular

我试图在ListView上为每个元素实施滑动操作。整个视图是AbsoluteLayout,具有两个GridLayouts:一个充当“前景”(列表元素),另一个充当“背景”(滑动动作)。我希望它们都具有相等的“前景”高度(这是动态的,并且对于每个列表元素都不同)。

我在Android上成功实现了这一点-我在layoutChanged事件上调用了一个方法

onLayoutChanged(args: EventData) {
    const foregroundNotificationTemplate = (<AbsoluteLayout>(args.object)).getChildAt(1);
    const backgroundButtons = (<AbsoluteLayout>args.object).getChildAt(0);
    backgroundButtons.height = foregroundNotificationTemplate.getActualSize().height;
}

不幸的是,这不适用于iOS。我尝试访问Frame和UiView,但没有成功-它具有背景内容的高度。

演示在Nativescript Playground上出现的问题: https://play.nativescript.org/?template=play-ng&id=4LRwDC

2 个答案:

答案 0 :(得分:1)

您不必使用AbsoluteLayout,因为您可以通过平移为位置设置动画,这对于任何布局都是可能的。因此,在两个平台上使用GridLayout代替AbsoluteLayout应该可以解决您的问题,并且还可能会摆脱layoutChanged事件来测量高度。

还请注意,ListView项目模板不能是动态的,因此不应使用ngIf或任何会改变列表项目结构的方法,而应使用多个模板。

答案 1 :(得分:0)

对于任何寻求有效解决方案的人,这就是Manoj提出的建议:https://play.nativescript.org/?template=play-ng&id=yXggcv