@@ -9,7 +9,7 @@ import * as types from "utils/types";
99import style = require( "ui/styling/style" ) ;
1010import enums = require( "ui/enums" ) ;
1111import background = require( "ui/styling/background" ) ;
12- import { CommonLayoutParams , Thickness } from "ui/styling/style" ;
12+ import { CommonLayoutParams } from "ui/styling/style" ;
1313import { device } from "platform" ;
1414
1515global . 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 ,
0 commit comments