import { AbsoluteLayoutBase, View, leftProperty, topProperty, Length } from "./absolute-layout-common"; export * from "./absolute-layout-common"; function makeNativeSetter(setter: (this: View, lp: org.nativescript.widgets.CommonLayoutParams, value: T) => void) { return function(this: View, value: T) { const nativeView: android.view.View = this.nativeViewProtected; const lp = nativeView.getLayoutParams() || new org.nativescript.widgets.CommonLayoutParams(); if (lp instanceof org.nativescript.widgets.CommonLayoutParams) { setter.call(this, lp, value); nativeView.setLayoutParams(lp); } } } View.prototype[topProperty.setNative] = makeNativeSetter(function(this: View, lp, value) { lp.top = Length.toDevicePixels(value, 0) }); View.prototype[leftProperty.setNative] = makeNativeSetter(function(this: View, lp, value) { lp.left = Length.toDevicePixels(value, 0) }); export class AbsoluteLayout extends AbsoluteLayoutBase { nativeViewProtected: org.nativescript.widgets.AbsoluteLayout; public createNativeView() { return new org.nativescript.widgets.AbsoluteLayout(this._context); } }