mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-15 02:54:11 +08:00
32 lines
1.2 KiB
TypeScript
32 lines
1.2 KiB
TypeScript
import { AbsoluteLayoutBase, leftProperty, topProperty } from './absolute-layout-common';
|
|
import { View } from '../../core/view';
|
|
import { Length } from '../../styling/style-properties';
|
|
|
|
export * from './absolute-layout-common';
|
|
|
|
function makeNativeSetter<T>(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<number>(function (this: View, lp, value) {
|
|
lp.top = Length.toDevicePixels(value, 0);
|
|
});
|
|
View.prototype[leftProperty.setNative] = makeNativeSetter<number>(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);
|
|
}
|
|
}
|