mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-11-05 13:26:48 +08:00
Merge pull request #1348 from NativeScript/hhristov/percent-layouts-fix
Hhristov/percent layouts fix
This commit is contained in:
@@ -29,11 +29,11 @@ export var test_getString = function (done: (err: Error, res?: string) => void)
|
||||
done(null);
|
||||
// </hide>
|
||||
}, function (e) {
|
||||
//// Argument (e) is Error!
|
||||
// <hide>
|
||||
done(e);
|
||||
// </hide>
|
||||
});
|
||||
//// Argument (e) is Error!
|
||||
// <hide>
|
||||
done(e);
|
||||
// </hide>
|
||||
});
|
||||
// ```
|
||||
// </snippet>
|
||||
};
|
||||
@@ -90,12 +90,12 @@ export var test_getJSON = function (done) {
|
||||
done(null);
|
||||
// </hide>
|
||||
}, function (e) {
|
||||
//// Argument (e) is Error!
|
||||
//console.log(e);
|
||||
// <hide>
|
||||
done(e);
|
||||
// </hide>
|
||||
});
|
||||
//// Argument (e) is Error!
|
||||
//console.log(e);
|
||||
// <hide>
|
||||
done(e);
|
||||
// </hide>
|
||||
});
|
||||
// ```
|
||||
// </snippet>
|
||||
};
|
||||
@@ -144,8 +144,8 @@ export var test_getJSONP = function (done) {
|
||||
}
|
||||
done(null);
|
||||
}, function (e) {
|
||||
done(e);
|
||||
});
|
||||
done(e);
|
||||
});
|
||||
};
|
||||
|
||||
export var test_getJSON_fail_when_result_is_not_JSONP = function (done) {
|
||||
@@ -186,11 +186,11 @@ export var test_getImage = function (done) {
|
||||
}
|
||||
// </hide>
|
||||
}, function (e) {
|
||||
//// Argument (e) is Error!
|
||||
// <hide>
|
||||
done(e);
|
||||
// </hide>
|
||||
});
|
||||
//// Argument (e) is Error!
|
||||
// <hide>
|
||||
done(e);
|
||||
// </hide>
|
||||
});
|
||||
// ```
|
||||
// </snippet>
|
||||
};
|
||||
@@ -278,11 +278,11 @@ export var test_request_responseStatusCodeShouldBeDefined = function (done) {
|
||||
}
|
||||
// </hide>
|
||||
}, function (e) {
|
||||
//// Argument (e) is Error!
|
||||
// <hide>
|
||||
done(e);
|
||||
// </hide>
|
||||
});
|
||||
//// Argument (e) is Error!
|
||||
// <hide>
|
||||
done(e);
|
||||
// </hide>
|
||||
});
|
||||
// ```
|
||||
// </snippet>
|
||||
};
|
||||
@@ -309,11 +309,11 @@ export var test_request_responseHeadersShouldBeDefined = function (done) {
|
||||
}
|
||||
// </hide>
|
||||
}, function (e) {
|
||||
//// Argument (e) is Error!
|
||||
// <hide>
|
||||
done(e);
|
||||
// </hide>
|
||||
});
|
||||
//// Argument (e) is Error!
|
||||
// <hide>
|
||||
done(e);
|
||||
// </hide>
|
||||
});
|
||||
// ```
|
||||
// </snippet>
|
||||
};
|
||||
@@ -341,11 +341,11 @@ export var test_request_responseContentShouldBeDefined = function (done) {
|
||||
}
|
||||
// </hide>
|
||||
}, function (e) {
|
||||
//// Argument (e) is Error!
|
||||
// <hide>
|
||||
done(e);
|
||||
// </hide>
|
||||
});
|
||||
//// Argument (e) is Error!
|
||||
// <hide>
|
||||
done(e);
|
||||
// </hide>
|
||||
});
|
||||
// ```
|
||||
// </snippet>
|
||||
};
|
||||
@@ -363,8 +363,8 @@ export var test_request_responseContentToStringShouldReturnString = function (do
|
||||
done(err);
|
||||
}
|
||||
}, function (e) {
|
||||
done(e);
|
||||
});
|
||||
done(e);
|
||||
});
|
||||
};
|
||||
|
||||
export var test_request_responseContentToJSONShouldReturnJSON = function (done) {
|
||||
@@ -380,8 +380,8 @@ export var test_request_responseContentToJSONShouldReturnJSON = function (done)
|
||||
done(err);
|
||||
}
|
||||
}, function (e) {
|
||||
done(e);
|
||||
});
|
||||
done(e);
|
||||
});
|
||||
};
|
||||
|
||||
export var test_request_responseContentToImageShouldReturnCorrectImage = function (done) {
|
||||
@@ -399,8 +399,8 @@ export var test_request_responseContentToImageShouldReturnCorrectImage = functio
|
||||
}
|
||||
});
|
||||
}, function (e) {
|
||||
done(e);
|
||||
});
|
||||
done(e);
|
||||
});
|
||||
};
|
||||
|
||||
export var test_request_headersSentAndReceivedProperly = function (done) {
|
||||
@@ -420,8 +420,8 @@ export var test_request_headersSentAndReceivedProperly = function (done) {
|
||||
done(err);
|
||||
}
|
||||
}, function (e) {
|
||||
done(e);
|
||||
});
|
||||
done(e);
|
||||
});
|
||||
};
|
||||
|
||||
export var test_request_contentSentAndReceivedProperly = function (done) {
|
||||
@@ -442,8 +442,8 @@ export var test_request_contentSentAndReceivedProperly = function (done) {
|
||||
done(err);
|
||||
}
|
||||
}, function (e) {
|
||||
done(e);
|
||||
});
|
||||
done(e);
|
||||
});
|
||||
};
|
||||
|
||||
export var test_request_FormDataContentSentAndReceivedProperly = function (done) {
|
||||
@@ -468,8 +468,8 @@ export var test_request_FormDataContentSentAndReceivedProperly = function (done)
|
||||
done(err);
|
||||
}
|
||||
}, function (e) {
|
||||
done(e);
|
||||
});
|
||||
done(e);
|
||||
});
|
||||
};
|
||||
|
||||
export var test_request_NonStringHeadersSentAndReceivedProperly = function (done) {
|
||||
@@ -492,8 +492,8 @@ export var test_request_NonStringHeadersSentAndReceivedProperly = function (done
|
||||
done(err);
|
||||
}
|
||||
}, function (e) {
|
||||
done(e);
|
||||
});
|
||||
done(e);
|
||||
});
|
||||
};
|
||||
|
||||
export var test_request_jsonAsContentSentAndReceivedProperly = function (done) {
|
||||
@@ -521,27 +521,29 @@ export var test_request_jsonAsContentSentAndReceivedProperly = function (done) {
|
||||
// </hide>
|
||||
// console.log(result);
|
||||
}, function (e) {
|
||||
// <hide>
|
||||
done(e);
|
||||
// </hide>
|
||||
// console.log("Error occurred " + e);
|
||||
});
|
||||
// <hide>
|
||||
done(e);
|
||||
// </hide>
|
||||
// console.log("Error occurred " + e);
|
||||
});
|
||||
// ```
|
||||
// </snippet>
|
||||
};
|
||||
|
||||
export var test_getString_FromVariousUrls_ShouldWorkProperly = function (done) {
|
||||
var urls = [
|
||||
"https://it-ebooks-api.info/v1/book/1615005640",
|
||||
"https://www.telerik.com",
|
||||
"https://spreadsheets.google.com/tq?key=1tJ64Y8hje0ui4ap9U33h3KWwpxT_-JuVMSZzxD2Er8k",
|
||||
"https://chase.arborgoldcloud.net/mobilehandler/mobiledatahandler.ashx?ProcedureName=MEstimGetJobListSpeed&@prmSalesRep=%&@prmStartDate=11/1/2015&@prmEndDate=12/8/2015&@prmStatusFilter=2"
|
||||
];
|
||||
export var test_getString_1 = function (done) {
|
||||
doRequest("https://it-ebooks-api.info/v1/book/1615005640", done);
|
||||
};
|
||||
|
||||
var i: number;
|
||||
for (i = 0; i < urls.length; i++) {
|
||||
doRequest(urls[i], done);
|
||||
}
|
||||
export var test_getString_2 = function (done) {
|
||||
doRequest("https://www.telerik.com", done);
|
||||
};
|
||||
|
||||
export var test_getString_3 = function (done) {
|
||||
doRequest("https://spreadsheets.google.com/tq?key=1tJ64Y8hje0ui4ap9U33h3KWwpxT_-JuVMSZzxD2Er8k", done);
|
||||
};
|
||||
|
||||
export var test_getString_4 = function (done) {
|
||||
doRequest("https://chase.arborgoldcloud.net/mobilehandler/mobiledatahandler.ashx?ProcedureName=MEstimGetJobListSpeed&@prmSalesRep=%&@prmStartDate=11/1/2015&@prmEndDate=12/8/2015&@prmStatusFilter=2", done);
|
||||
};
|
||||
|
||||
function doRequest(url: string, done: Function) {
|
||||
@@ -554,6 +556,6 @@ function doRequest(url: string, done: Function) {
|
||||
done(err);
|
||||
}
|
||||
}, function (e) {
|
||||
done(e);
|
||||
});
|
||||
done(e);
|
||||
});
|
||||
};
|
||||
@@ -5,6 +5,7 @@ import labelModule = require("ui/label");
|
||||
import helper = require("../ui/helper");
|
||||
import colorModule = require("color");
|
||||
import layoutHelper = require("./layout-helper");
|
||||
import commonTests = require("./common-layout-tests");
|
||||
|
||||
// <snippet module="ui/layouts/absolute-layout" title="absolute-layout">
|
||||
// # AbsoluteLayout
|
||||
@@ -120,6 +121,10 @@ export class AbsoluteLayoutTest extends testModule.UITest<absoluteLayoutModule.A
|
||||
TKUnit.assertEqual(btn.getMeasuredWidth(), 100, "Button MeasuredWidth incorrect");
|
||||
TKUnit.assertEqual(btn.getMeasuredHeight(), 100, "Button MeasuredHeight incorrect");
|
||||
}
|
||||
|
||||
public test_percent_support_nativeLayoutParams_are_correct() {
|
||||
commonTests.percent_support_nativeLayoutParams_are_correct(this);
|
||||
}
|
||||
}
|
||||
|
||||
export function createTestCase(): AbsoluteLayoutTest {
|
||||
|
||||
@@ -4,6 +4,75 @@ import enums = require("ui/enums");
|
||||
import testModule = require("../ui-test");
|
||||
import {LayoutBase} from "ui/layouts/layout-base";
|
||||
import {widthProperty} from "ui/styling/style"
|
||||
import platform = require("platform");
|
||||
|
||||
function getNativeLayoutParams(nativeView: android.view.View): org.nativescript.widgets.CommonLayoutParams {
|
||||
var lp = <org.nativescript.widgets.CommonLayoutParams>nativeView.getLayoutParams();
|
||||
if (!(lp instanceof org.nativescript.widgets.CommonLayoutParams)) {
|
||||
lp = new org.nativescript.widgets.CommonLayoutParams();
|
||||
}
|
||||
|
||||
return lp;
|
||||
}
|
||||
|
||||
export function percent_support_nativeLayoutParams_are_correct(test: testModule.UITest<LayoutBase>) {
|
||||
if (platform.device.os !== platform.platformNames.android) {
|
||||
return;
|
||||
}
|
||||
|
||||
let layout = test.testView;
|
||||
layout.width = layoutHelper.dp(200);
|
||||
layout.height = layoutHelper.dp(200);
|
||||
|
||||
let btn = new layoutHelper.MyButton();
|
||||
btn.width = layoutHelper.dp(100);
|
||||
btn.height = layoutHelper.dp(100);
|
||||
btn.margin = "10%";
|
||||
layout.addChild(btn);
|
||||
|
||||
test.waitUntilTestElementLayoutIsValid();
|
||||
|
||||
let lp = getNativeLayoutParams(btn._nativeView);
|
||||
TKUnit.assertEqual(lp.width, 100, "width");
|
||||
TKUnit.assertEqual(lp.widthPercent, -1, "widthPercent");
|
||||
TKUnit.assertEqual(lp.height, 100, "height");
|
||||
TKUnit.assertEqual(lp.heightPercent, -1, "heightPercent");
|
||||
TKUnit.assertEqual(lp.topMargin, 0, "topMargin");
|
||||
TKUnit.assertTrue(lp.topMarginPercent > 0, "topMarginPercent");
|
||||
TKUnit.assertEqual(lp.leftMargin, 0, "leftMargin");
|
||||
TKUnit.assertTrue(lp.leftMarginPercent > 0, "leftMarginPercent");
|
||||
TKUnit.assertEqual(lp.rightMargin, 0, "rightMargin");
|
||||
TKUnit.assertTrue(lp.rightMarginPercent > 0, "rightMarginPercent");
|
||||
TKUnit.assertEqual(lp.bottomMargin, 0, "bottomMargin");
|
||||
TKUnit.assertTrue(lp.bottomMarginPercent > 0, "bottomMarginPercent");
|
||||
|
||||
(<any>btn).width = "50%";
|
||||
(<any>btn).height = "50%";
|
||||
test.waitUntilTestElementLayoutIsValid();
|
||||
|
||||
TKUnit.assertEqual(lp.width, -1, "width");
|
||||
TKUnit.assertEqual(lp.widthPercent, 0.5, "widthPercent");
|
||||
TKUnit.assertEqual(lp.height, -1, "height");
|
||||
TKUnit.assertEqual(lp.heightPercent, 0.5, "heightPercent");
|
||||
|
||||
btn.margin = "0";
|
||||
btn.height = Number.NaN;
|
||||
(<any>btn.style)._resetValue(widthProperty);
|
||||
test.waitUntilTestElementLayoutIsValid();
|
||||
|
||||
TKUnit.assertEqual(lp.width, -1, "width");
|
||||
TKUnit.assertEqual(lp.widthPercent, -1, "widthPercent");
|
||||
TKUnit.assertEqual(lp.height, -1, "height");
|
||||
TKUnit.assertEqual(lp.heightPercent, -1, "heightPercent");
|
||||
TKUnit.assertEqual(lp.topMargin, 0, "topMargin");
|
||||
TKUnit.assertEqual(lp.topMarginPercent, -1, "topMarginPercent");
|
||||
TKUnit.assertEqual(lp.leftMargin, 0, "leftMargin");
|
||||
TKUnit.assertEqual(lp.leftMarginPercent, -1, "leftMarginPercent");
|
||||
TKUnit.assertEqual(lp.rightMargin, 0, "rightMargin");
|
||||
TKUnit.assertEqual(lp.rightMarginPercent, -1, "rightMarginPercent");
|
||||
TKUnit.assertEqual(lp.bottomMargin, 0, "bottomMargin");
|
||||
TKUnit.assertEqual(lp.bottomMarginPercent, -1, "bottomMarginPercent");
|
||||
}
|
||||
|
||||
export function percent_support_test(test: testModule.UITest<LayoutBase>) {
|
||||
let layout: LayoutBase = test.testView;
|
||||
|
||||
@@ -195,6 +195,10 @@ export class DockLayoutTest extends testModule.UITest<DockLayout> {
|
||||
public test_percent_support() {
|
||||
commonTests.percent_support_test(this);
|
||||
}
|
||||
|
||||
public test_percent_support_nativeLayoutParams_are_correct() {
|
||||
commonTests.percent_support_nativeLayoutParams_are_correct(this);
|
||||
}
|
||||
}
|
||||
|
||||
export function createTestCase(): DockLayoutTest {
|
||||
|
||||
@@ -646,6 +646,10 @@ export class GridLayoutTest extends testModule.UITest<layout.GridLayout> {
|
||||
public test_percent_support() {
|
||||
commonTests.percent_support_test(this);
|
||||
}
|
||||
|
||||
public test_percent_support_nativeLayoutParams_are_correct() {
|
||||
commonTests.percent_support_nativeLayoutParams_are_correct(this);
|
||||
}
|
||||
}
|
||||
|
||||
export function createTestCase(): GridLayoutTest {
|
||||
|
||||
@@ -312,6 +312,10 @@ export class StackLayoutTest extends testModule.UITest<StackLayout> {
|
||||
TKUnit.assertEqual(bounds.right, 120, "BottomRight layout RIGHT incorrect");
|
||||
TKUnit.assertEqual(bounds.bottom, 180, "BottomRight layout BOTTOM incorrect");
|
||||
}
|
||||
|
||||
public test_percent_support_nativeLayoutParams_are_correct() {
|
||||
commonTests.percent_support_nativeLayoutParams_are_correct(this);
|
||||
}
|
||||
}
|
||||
|
||||
export function createTestCase(): StackLayoutTest {
|
||||
|
||||
@@ -279,6 +279,10 @@ export class WrapLayoutTest extends testModule.UITest<wrapLayoutModule.WrapLayou
|
||||
TKUnit.assertEqual(bounds.right, 120, "BottomRight layout RIGHT incorrect");
|
||||
TKUnit.assertEqual(bounds.bottom, 120, "BottomRight layout BOTTOM incorrect");
|
||||
}
|
||||
|
||||
public test_percent_support_nativeLayoutParams_are_correct() {
|
||||
commonTests.percent_support_nativeLayoutParams_are_correct(this);
|
||||
}
|
||||
}
|
||||
|
||||
export function createTestCase(): WrapLayoutTest {
|
||||
|
||||
2
org.nativescript.widgets.d.ts
vendored
2
org.nativescript.widgets.d.ts
vendored
@@ -62,7 +62,7 @@
|
||||
}
|
||||
|
||||
export enum Orientation {
|
||||
horzontal,
|
||||
horizontal,
|
||||
vertical
|
||||
}
|
||||
|
||||
|
||||
@@ -570,17 +570,7 @@ export class ViewStyler implements style.Styler {
|
||||
}
|
||||
|
||||
private static resetNativeLayoutParamsProperty(view: View, nativeValue: any): void {
|
||||
var nativeView: android.view.View = view._nativeView;
|
||||
var lp = ViewStyler.getNativeLayoutParams(nativeView);
|
||||
|
||||
lp.width = -1;
|
||||
lp.height = -1;
|
||||
lp.leftMargin = 0;
|
||||
lp.topMargin = 0;
|
||||
lp.rightMargin = 0;
|
||||
lp.bottomMargin = 0;
|
||||
lp.gravity = android.view.Gravity.FILL_HORIZONTAL | android.view.Gravity.FILL_VERTICAL;
|
||||
nativeView.setLayoutParams(lp);
|
||||
ViewStyler.setNativeLayoutParamsProperty(view, style.nativeLayoutParamsProperty.metadata.defaultValue)
|
||||
}
|
||||
|
||||
private static setPaddingProperty(view: View, newValue: Thickness) {
|
||||
|
||||
@@ -10,7 +10,7 @@ export class StackLayout extends common.StackLayout {
|
||||
static setNativeOrientationProperty(data: dependencyObservable.PropertyChangeData): void {
|
||||
var stackLayout = <StackLayout>data.object;
|
||||
var nativeView = stackLayout._nativeView;
|
||||
nativeView.setOrientation(data.newValue === enums.Orientation.vertical ? org.nativescript.widgets.Orientation.vertical : org.nativescript.widgets.Orientation.horzontal);
|
||||
nativeView.setOrientation(data.newValue === enums.Orientation.vertical ? org.nativescript.widgets.Orientation.vertical : org.nativescript.widgets.Orientation.horizontal);
|
||||
}
|
||||
|
||||
private _layout: org.nativescript.widgets.StackLayout;
|
||||
|
||||
@@ -11,7 +11,7 @@ export class WrapLayout extends common.WrapLayout {
|
||||
static setNativeOrientationProperty(data: dependencyObservable.PropertyChangeData): void {
|
||||
var wrapLayout = <WrapLayout>data.object;
|
||||
var nativeView = wrapLayout._nativeView;
|
||||
nativeView.setOrientation(data.newValue === enums.Orientation.vertical ? org.nativescript.widgets.Orientation.vertical : org.nativescript.widgets.Orientation.horzontal);
|
||||
nativeView.setOrientation(data.newValue === enums.Orientation.vertical ? org.nativescript.widgets.Orientation.vertical : org.nativescript.widgets.Orientation.horizontal);
|
||||
}
|
||||
|
||||
static setNativeItemWidthProperty(data: dependencyObservable.PropertyChangeData): void {
|
||||
|
||||
Reference in New Issue
Block a user