Fixed paddings (#2552)

* Fixed paddings

* Fix tslint
This commit is contained in:
Hristo Hristov
2016-08-07 22:29:00 +03:00
committed by Hristo Hristov
parent 4f5b7aa771
commit 62fc7b305b
2 changed files with 88 additions and 26 deletions

View File

@@ -9,7 +9,7 @@ import * as types from "utils/types";
import style = require("ui/styling/style"); import style = require("ui/styling/style");
import enums = require("ui/enums"); import enums = require("ui/enums");
import background = require("ui/styling/background"); import background = require("ui/styling/background");
import {CommonLayoutParams, Thickness} from "ui/styling/style"; import {CommonLayoutParams} from "ui/styling/style";
import {device} from "platform"; import {device} from "platform";
global.moduleMerge(viewCommon, exports); global.moduleMerge(viewCommon, exports);
@@ -254,6 +254,12 @@ export class View extends viewCommon.View {
} }
// copy all the locally cached values to the native android widget // copy all the locally cached values to the native android widget
// Initialize padding default values.
// TODO: remove this code.
let padding = this.style.paddingLeft;
padding = this.style.paddingTop;
padding = this.style.paddingRight;
padding = this.style.paddingBottom;
this._syncNativeProperties(); this._syncNativeProperties();
trace.notifyEvent(this, "_onContextChanged"); trace.notifyEvent(this, "_onContextChanged");
} }
@@ -650,23 +656,64 @@ export class ViewStyler implements style.Styler {
ViewStyler.setNativeLayoutParamsProperty(view, style.nativeLayoutParamsProperty.defaultValue) ViewStyler.setNativeLayoutParamsProperty(view, style.nativeLayoutParamsProperty.defaultValue)
} }
private static setPaddingProperty(view: View, newValue: Thickness) { private static getNativePaddingLeft(view: View): number {
let density = utils.layout.getDisplayDensity(); let density = utils.layout.getDisplayDensity();
let style = view.style; return view._nativeView.getPaddingLeft() / density;
let left = Math.round((style.paddingLeft + view.borderWidth) * density);
let top = Math.round((style.paddingTop + view.borderWidth) * density);
let right = Math.round((style.paddingRight + view.borderWidth) * density);
let bottom = Math.round((style.paddingBottom + view.borderWidth) * density);
(<android.view.View>view._nativeView).setPadding(left, top, right, bottom);
} }
private static resetPaddingProperty(view: View, nativeValue: Thickness) { private static getNativePaddingTop(view: View): number {
var density = utils.layout.getDisplayDensity(); let density = utils.layout.getDisplayDensity();
var left = Math.round((nativeValue.left + view.borderWidth) * density); return view._nativeView.getPaddingTop() / density;
var top = Math.round((nativeValue.top + view.borderWidth) * density); }
var right = Math.round((nativeValue.right + view.borderWidth) * density);
var bottom = Math.round((nativeValue.bottom + view.borderWidth) * density); private static getNativePaddingRight(view: View): number {
(<android.view.View>view._nativeView).setPadding(left, top, right, bottom); let density = utils.layout.getDisplayDensity();
return view._nativeView.getPaddingRight() / density;
}
private static getNativePaddingBottom(view: View): number {
let density = utils.layout.getDisplayDensity();
return view._nativeView.getPaddingBottom() / density;
}
private static setNativePaddingLeft(view: View, value: number): void {
let nativeView = view._nativeView;
let density = utils.layout.getDisplayDensity();
let left = (value + view.borderWidth) * density;
let top = nativeView.getPaddingTop();
let right = nativeView.getPaddingRight();
let bottom = nativeView.getPaddingBottom();
nativeView.setPadding(left, top, right, bottom);
}
private static setNativePaddingTop(view: View, value: number): void {
let nativeView = view._nativeView;
let density = utils.layout.getDisplayDensity();
let left = nativeView.getPaddingLeft();
let top = (value + view.borderWidth) * density;
let right = nativeView.getPaddingRight();
let bottom = nativeView.getPaddingBottom();
nativeView.setPadding(left, top, right, bottom);
}
private static setNativePaddingRight(view: View, value: number): void {
let nativeView = view._nativeView;
let density = utils.layout.getDisplayDensity();
let left = nativeView.getPaddingLeft();
let top = nativeView.getPaddingTop();
let right = (value + view.borderWidth) * density;
let bottom = nativeView.getPaddingBottom();
nativeView.setPadding(left, top, right, bottom);
}
private static setNativePaddingBottom(view: View, value: number): void {
let nativeView = view._nativeView;
let density = utils.layout.getDisplayDensity();
let left = nativeView.getPaddingLeft();
let top = nativeView.getPaddingTop();
let right = nativeView.getPaddingRight();
let bottom = (value + view.borderWidth) * density;
nativeView.setPadding(left, top, right, bottom);
} }
// Rotate // Rotate
@@ -764,17 +811,32 @@ export class ViewStyler implements style.Styler {
ViewStyler.setNativeLayoutParamsProperty, ViewStyler.setNativeLayoutParamsProperty,
ViewStyler.resetNativeLayoutParamsProperty)); ViewStyler.resetNativeLayoutParamsProperty));
style.registerHandler(style.nativePaddingsProperty, new style.StylePropertyChangedHandler( style.registerHandler(style.paddingLeftProperty,
ViewStyler.setPaddingProperty, new style.StylePropertyChangedHandler(ViewStyler.setNativePaddingLeft, ViewStyler.setNativePaddingLeft, ViewStyler.getNativePaddingLeft), "TextBase");
ViewStyler.resetPaddingProperty), "TextBase"); style.registerHandler(style.paddingTopProperty,
new style.StylePropertyChangedHandler(ViewStyler.setNativePaddingTop, ViewStyler.setNativePaddingTop, ViewStyler.getNativePaddingTop), "TextBase");
style.registerHandler(style.paddingRightProperty,
new style.StylePropertyChangedHandler(ViewStyler.setNativePaddingRight, ViewStyler.setNativePaddingRight, ViewStyler.getNativePaddingRight), "TextBase");
style.registerHandler(style.paddingBottomProperty,
new style.StylePropertyChangedHandler(ViewStyler.setNativePaddingBottom, ViewStyler.setNativePaddingBottom, ViewStyler.getNativePaddingBottom), "TextBase");
style.registerHandler(style.nativePaddingsProperty, new style.StylePropertyChangedHandler( style.registerHandler(style.paddingLeftProperty,
ViewStyler.setPaddingProperty, new style.StylePropertyChangedHandler(ViewStyler.setNativePaddingLeft, ViewStyler.setNativePaddingLeft, ViewStyler.getNativePaddingLeft), "Button");
ViewStyler.resetPaddingProperty), "Button"); style.registerHandler(style.paddingTopProperty,
new style.StylePropertyChangedHandler(ViewStyler.setNativePaddingTop, ViewStyler.setNativePaddingTop, ViewStyler.getNativePaddingTop), "Button");
style.registerHandler(style.paddingRightProperty,
new style.StylePropertyChangedHandler(ViewStyler.setNativePaddingRight, ViewStyler.setNativePaddingRight, ViewStyler.getNativePaddingRight), "Button");
style.registerHandler(style.paddingBottomProperty,
new style.StylePropertyChangedHandler(ViewStyler.setNativePaddingBottom, ViewStyler.setNativePaddingBottom, ViewStyler.getNativePaddingBottom), "Button");
style.registerHandler(style.nativePaddingsProperty, new style.StylePropertyChangedHandler( style.registerHandler(style.paddingLeftProperty,
ViewStyler.setPaddingProperty, new style.StylePropertyChangedHandler(ViewStyler.setNativePaddingLeft, ViewStyler.setNativePaddingLeft, ViewStyler.getNativePaddingLeft), "LayoutBase");
ViewStyler.resetPaddingProperty), "LayoutBase"); style.registerHandler(style.paddingTopProperty,
new style.StylePropertyChangedHandler(ViewStyler.setNativePaddingTop, ViewStyler.setNativePaddingTop, ViewStyler.getNativePaddingTop), "LayoutBase");
style.registerHandler(style.paddingRightProperty,
new style.StylePropertyChangedHandler(ViewStyler.setNativePaddingRight, ViewStyler.setNativePaddingRight, ViewStyler.getNativePaddingRight), "LayoutBase");
style.registerHandler(style.paddingBottomProperty,
new style.StylePropertyChangedHandler(ViewStyler.setNativePaddingBottom, ViewStyler.setNativePaddingBottom, ViewStyler.getNativePaddingBottom), "LayoutBase");
style.registerHandler(style.rotateProperty, new style.StylePropertyChangedHandler( style.registerHandler(style.rotateProperty, new style.StylePropertyChangedHandler(
ViewStyler.setRotateProperty, ViewStyler.setRotateProperty,

View File

@@ -1224,7 +1224,7 @@ export var nativePaddingsProperty = new styleProperty.Property("paddingNative",
new PropertyMetadata(undefined, null, null, null, thicknessComparer)); new PropertyMetadata(undefined, null, null, null, thicknessComparer));
// TODO: separate into .android/.ios files so that there is no need for such checks // TODO: separate into .android/.ios files so that there is no need for such checks
var defaultPadding = platform.device.os === platform.platformNames.android ? undefined : 0; var defaultPadding = platform.isAndroid ? undefined : 0;
export var paddingLeftProperty = new styleProperty.Property("paddingLeft", "padding-left", export var paddingLeftProperty = new styleProperty.Property("paddingLeft", "padding-left",
new PropertyMetadata(defaultPadding, AffectsLayout, onPaddingValueChanged, isNonNegativeFiniteNumber), converters.numberConverter); new PropertyMetadata(defaultPadding, AffectsLayout, onPaddingValueChanged, isNonNegativeFiniteNumber), converters.numberConverter);