Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 62fc7b3

Browse files
Hristo HristovHristo Hristov
authored andcommitted
Fixed paddings (#2552)
* Fixed paddings * Fix tslint
1 parent 4f5b7aa commit 62fc7b3

File tree

2 files changed

+90
-28
lines changed

2 files changed

+90
-28
lines changed

tns-core-modules/ui/core/view.android.ts

Lines changed: 89 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import * as types from "utils/types";
99
import style = require("ui/styling/style");
1010
import enums = require("ui/enums");
1111
import background = require("ui/styling/background");
12-
import {CommonLayoutParams, Thickness} from "ui/styling/style";
12+
import {CommonLayoutParams} from "ui/styling/style";
1313
import {device} from "platform";
1414

1515
global.moduleMerge(viewCommon, exports);
@@ -254,6 +254,12 @@ export class View extends viewCommon.View {
254254
}
255255

256256
// copy all the locally cached values to the native android widget
257+
// Initialize padding default values.
258+
// TODO: remove this code.
259+
let padding = this.style.paddingLeft;
260+
padding = this.style.paddingTop;
261+
padding = this.style.paddingRight;
262+
padding = this.style.paddingBottom;
257263
this._syncNativeProperties();
258264
trace.notifyEvent(this, "_onContextChanged");
259265
}
@@ -650,23 +656,64 @@ export class ViewStyler implements style.Styler {
650656
ViewStyler.setNativeLayoutParamsProperty(view, style.nativeLayoutParamsProperty.defaultValue)
651657
}
652658

653-
private static setPaddingProperty(view: View, newValue: Thickness) {
659+
private static getNativePaddingLeft(view: View): number {
654660
let density = utils.layout.getDisplayDensity();
655-
let style = view.style;
656-
let left = Math.round((style.paddingLeft + view.borderWidth) * density);
657-
let top = Math.round((style.paddingTop + view.borderWidth) * density);
658-
let right = Math.round((style.paddingRight + view.borderWidth) * density);
659-
let bottom = Math.round((style.paddingBottom + view.borderWidth) * density);
660-
(<android.view.View>view._nativeView).setPadding(left, top, right, bottom);
661+
return view._nativeView.getPaddingLeft() / density;
661662
}
662663

663-
private static resetPaddingProperty(view: View, nativeValue: Thickness) {
664-
var density = utils.layout.getDisplayDensity();
665-
var left = Math.round((nativeValue.left + view.borderWidth) * density);
666-
var top = Math.round((nativeValue.top + view.borderWidth) * density);
667-
var right = Math.round((nativeValue.right + view.borderWidth) * density);
668-
var bottom = Math.round((nativeValue.bottom + view.borderWidth) * density);
669-
(<android.view.View>view._nativeView).setPadding(left, top, right, bottom);
664+
private static getNativePaddingTop(view: View): number {
665+
let density = utils.layout.getDisplayDensity();
666+
return view._nativeView.getPaddingTop() / density;
667+
}
668+
669+
private static getNativePaddingRight(view: View): number {
670+
let density = utils.layout.getDisplayDensity();
671+
return view._nativeView.getPaddingRight() / density;
672+
}
673+
674+
private static getNativePaddingBottom(view: View): number {
675+
let density = utils.layout.getDisplayDensity();
676+
return view._nativeView.getPaddingBottom() / density;
677+
}
678+
679+
private static setNativePaddingLeft(view: View, value: number): void {
680+
let nativeView = view._nativeView;
681+
let density = utils.layout.getDisplayDensity();
682+
let left = (value + view.borderWidth) * density;
683+
let top = nativeView.getPaddingTop();
684+
let right = nativeView.getPaddingRight();
685+
let bottom = nativeView.getPaddingBottom();
686+
nativeView.setPadding(left, top, right, bottom);
687+
}
688+
689+
private static setNativePaddingTop(view: View, value: number): void {
690+
let nativeView = view._nativeView;
691+
let density = utils.layout.getDisplayDensity();
692+
let left = nativeView.getPaddingLeft();
693+
let top = (value + view.borderWidth) * density;
694+
let right = nativeView.getPaddingRight();
695+
let bottom = nativeView.getPaddingBottom();
696+
nativeView.setPadding(left, top, right, bottom);
697+
}
698+
699+
private static setNativePaddingRight(view: View, value: number): void {
700+
let nativeView = view._nativeView;
701+
let density = utils.layout.getDisplayDensity();
702+
let left = nativeView.getPaddingLeft();
703+
let top = nativeView.getPaddingTop();
704+
let right = (value + view.borderWidth) * density;
705+
let bottom = nativeView.getPaddingBottom();
706+
nativeView.setPadding(left, top, right, bottom);
707+
}
708+
709+
private static setNativePaddingBottom(view: View, value: number): void {
710+
let nativeView = view._nativeView;
711+
let density = utils.layout.getDisplayDensity();
712+
let left = nativeView.getPaddingLeft();
713+
let top = nativeView.getPaddingTop();
714+
let right = nativeView.getPaddingRight();
715+
let bottom = (value + view.borderWidth) * density;
716+
nativeView.setPadding(left, top, right, bottom);
670717
}
671718

672719
// Rotate
@@ -764,17 +811,32 @@ export class ViewStyler implements style.Styler {
764811
ViewStyler.setNativeLayoutParamsProperty,
765812
ViewStyler.resetNativeLayoutParamsProperty));
766813

767-
style.registerHandler(style.nativePaddingsProperty, new style.StylePropertyChangedHandler(
768-
ViewStyler.setPaddingProperty,
769-
ViewStyler.resetPaddingProperty), "TextBase");
770-
771-
style.registerHandler(style.nativePaddingsProperty, new style.StylePropertyChangedHandler(
772-
ViewStyler.setPaddingProperty,
773-
ViewStyler.resetPaddingProperty), "Button");
774-
775-
style.registerHandler(style.nativePaddingsProperty, new style.StylePropertyChangedHandler(
776-
ViewStyler.setPaddingProperty,
777-
ViewStyler.resetPaddingProperty), "LayoutBase");
814+
style.registerHandler(style.paddingLeftProperty,
815+
new style.StylePropertyChangedHandler(ViewStyler.setNativePaddingLeft, ViewStyler.setNativePaddingLeft, ViewStyler.getNativePaddingLeft), "TextBase");
816+
style.registerHandler(style.paddingTopProperty,
817+
new style.StylePropertyChangedHandler(ViewStyler.setNativePaddingTop, ViewStyler.setNativePaddingTop, ViewStyler.getNativePaddingTop), "TextBase");
818+
style.registerHandler(style.paddingRightProperty,
819+
new style.StylePropertyChangedHandler(ViewStyler.setNativePaddingRight, ViewStyler.setNativePaddingRight, ViewStyler.getNativePaddingRight), "TextBase");
820+
style.registerHandler(style.paddingBottomProperty,
821+
new style.StylePropertyChangedHandler(ViewStyler.setNativePaddingBottom, ViewStyler.setNativePaddingBottom, ViewStyler.getNativePaddingBottom), "TextBase");
822+
823+
style.registerHandler(style.paddingLeftProperty,
824+
new style.StylePropertyChangedHandler(ViewStyler.setNativePaddingLeft, ViewStyler.setNativePaddingLeft, ViewStyler.getNativePaddingLeft), "Button");
825+
style.registerHandler(style.paddingTopProperty,
826+
new style.StylePropertyChangedHandler(ViewStyler.setNativePaddingTop, ViewStyler.setNativePaddingTop, ViewStyler.getNativePaddingTop), "Button");
827+
style.registerHandler(style.paddingRightProperty,
828+
new style.StylePropertyChangedHandler(ViewStyler.setNativePaddingRight, ViewStyler.setNativePaddingRight, ViewStyler.getNativePaddingRight), "Button");
829+
style.registerHandler(style.paddingBottomProperty,
830+
new style.StylePropertyChangedHandler(ViewStyler.setNativePaddingBottom, ViewStyler.setNativePaddingBottom, ViewStyler.getNativePaddingBottom), "Button");
831+
832+
style.registerHandler(style.paddingLeftProperty,
833+
new style.StylePropertyChangedHandler(ViewStyler.setNativePaddingLeft, ViewStyler.setNativePaddingLeft, ViewStyler.getNativePaddingLeft), "LayoutBase");
834+
style.registerHandler(style.paddingTopProperty,
835+
new style.StylePropertyChangedHandler(ViewStyler.setNativePaddingTop, ViewStyler.setNativePaddingTop, ViewStyler.getNativePaddingTop), "LayoutBase");
836+
style.registerHandler(style.paddingRightProperty,
837+
new style.StylePropertyChangedHandler(ViewStyler.setNativePaddingRight, ViewStyler.setNativePaddingRight, ViewStyler.getNativePaddingRight), "LayoutBase");
838+
style.registerHandler(style.paddingBottomProperty,
839+
new style.StylePropertyChangedHandler(ViewStyler.setNativePaddingBottom, ViewStyler.setNativePaddingBottom, ViewStyler.getNativePaddingBottom), "LayoutBase");
778840

779841
style.registerHandler(style.rotateProperty, new style.StylePropertyChangedHandler(
780842
ViewStyler.setRotateProperty,
@@ -795,7 +857,7 @@ export class ViewStyler implements style.Styler {
795857
style.registerHandler(style.translateYProperty, new style.StylePropertyChangedHandler(
796858
ViewStyler.setTranslateYProperty,
797859
ViewStyler.resetTranslateYProperty));
798-
860+
799861
if (parseInt(device.sdkVersion, 10) >= 21) {
800862
style.registerHandler(style.zIndexProperty, new style.StylePropertyChangedHandler(
801863
ViewStyler.setZIndexProperty,

tns-core-modules/ui/styling/style.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1224,7 +1224,7 @@ export var nativePaddingsProperty = new styleProperty.Property("paddingNative",
12241224
new PropertyMetadata(undefined, null, null, null, thicknessComparer));
12251225

12261226
// TODO: separate into .android/.ios files so that there is no need for such checks
1227-
var defaultPadding = platform.device.os === platform.platformNames.android ? undefined : 0;
1227+
var defaultPadding = platform.isAndroid ? undefined : 0;
12281228

12291229
export var paddingLeftProperty = new styleProperty.Property("paddingLeft", "padding-left",
12301230
new PropertyMetadata(defaultPadding, AffectsLayout, onPaddingValueChanged, isNonNegativeFiniteNumber), converters.numberConverter);

0 commit comments

Comments
 (0)