我试图在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
答案 0 :(得分:1)
您不必使用AbsoluteLayout
,因为您可以通过平移为位置设置动画,这对于任何布局都是可能的。因此,在两个平台上使用GridLayout
代替AbsoluteLayout
应该可以解决您的问题,并且还可能会摆脱layoutChanged
事件来测量高度。
还请注意,ListView项目模板不能是动态的,因此不应使用ngIf或任何会改变列表项目结构的方法,而应使用多个模板。
答案 1 :(得分:0)
对于任何寻求有效解决方案的人,这就是Manoj提出的建议:https://play.nativescript.org/?template=play-ng&id=yXggcv