This commit is contained in:
Rossen Hristov
2016-12-22 14:43:31 +02:00
parent 2d05e6ac6f
commit 0ec9950d46
6 changed files with 89 additions and 61 deletions

View File

@@ -1,6 +1,7 @@
import {
ButtonBase, TouchGestureEventData, GestureTypes, TouchAction,
PseudoClassHandler
PseudoClassHandler,
paddingLeftProperty, paddingTopProperty, paddingRightProperty, paddingBottomProperty, Length
} from "./button-common";
export * from "./button-common";
@@ -23,6 +24,7 @@ class ClickListener extends java.lang.Object implements android.view.View.OnClic
export class Button extends ButtonBase {
_button: android.widget.Button;
private _highlightedHandler: (args: TouchGestureEventData) => void;
private _defaultNativePadding: android.graphics.Rect;
get android(): android.widget.Button {
return this._button;
@@ -32,6 +34,16 @@ export class Button extends ButtonBase {
let weakRef = new WeakRef(this);
this._button = new android.widget.Button(this._context);
this._button.setOnClickListener(new ClickListener(weakRef));
// Unlike all other widgets, the Button has padding 30 36 30 36 in device pixels.
let result = new android.graphics.Rect();
this._button.getBackground().getPadding(result);
this._defaultNativePadding = result;
this.style.effectivePaddingTop = this._defaultNativePadding.top;
this.style.effectivePaddingRight = this._defaultNativePadding.right;
this.style.effectivePaddingBottom = this._defaultNativePadding.bottom;
this.style.effectivePaddingLeft = this._defaultNativePadding.left;
}
@PseudoClassHandler("normal", "highlighted", "pressed", "active")
@@ -52,4 +64,36 @@ export class Button extends ButtonBase {
this.off(GestureTypes.touch, this._highlightedHandler);
}
}
//PaddingTop
get [paddingTopProperty.native](): Length {
return { value: this._defaultNativePadding.top, unit: "px" }
}
set [paddingTopProperty.native](value: Length) {
org.nativescript.widgets.ViewHelper.setPaddingTop(this.nativeView, Length.toDevicePixels(value, 0) + Length.toDevicePixels(this.style.borderTopWidth, 0));
}
//PaddingRight
get [paddingRightProperty.native](): Length {
return { value: this._defaultNativePadding.right, unit: "px" }
}
set [paddingRightProperty.native](value: Length) {
org.nativescript.widgets.ViewHelper.setPaddingRight(this.nativeView, Length.toDevicePixels(value, 0) + Length.toDevicePixels(this.style.borderRightWidth, 0));
}
//PaddingBottom
get [paddingBottomProperty.native](): Length {
return { value: this._defaultNativePadding.bottom, unit: "px" }
}
set [paddingBottomProperty.native](value: Length) {
org.nativescript.widgets.ViewHelper.setPaddingBottom(this.nativeView, Length.toDevicePixels(value, 0) + Length.toDevicePixels(this.style.borderBottomWidth, 0));
}
//PaddingLeft
get [paddingLeftProperty.native](): Length {
return { value: this._defaultNativePadding.left, unit: "px" }
}
set [paddingLeftProperty.native](value: Length) {
org.nativescript.widgets.ViewHelper.setPaddingLeft(this.nativeView, Length.toDevicePixels(value, 0) + Length.toDevicePixels(this.style.borderLeftWidth, 0));
}
}