From a416fa4fb61c105f3cce94b9c8496ea939ba9c27 Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Mon, 11 Dec 2017 15:19:08 +0200 Subject: [PATCH] Fix TabViewItem loading Fix showModal not on full screen --- tns-core-modules/ui/core/view/view.android.ts | 10 ++++-- tns-core-modules/ui/page/page.android.ts | 3 -- .../ui/tab-view/tab-view-common.ts | 35 +++++++++---------- .../ui/tab-view/tab-view.android.ts | 4 +-- 4 files changed, 27 insertions(+), 25 deletions(-) diff --git a/tns-core-modules/ui/core/view/view.android.ts b/tns-core-modules/ui/core/view/view.android.ts index e5d03f656..d565450b3 100644 --- a/tns-core-modules/ui/core/view/view.android.ts +++ b/tns-core-modules/ui/core/view/view.android.ts @@ -141,14 +141,20 @@ function initializeDialogFragment() { this.owner._dialogFragment = this; this.setStyle(android.app.DialogFragment.STYLE_NO_TITLE, 0); - return new DialogImpl(this, this.getActivity(), this.getTheme()); + const dialog = new DialogImpl(this, this.getActivity(), this.getTheme()); + + // adjust alignment based on fullscreen value. + this.owner.horizontalAlignment = this._fullscreen ? "stretch" : "center"; + this.owner.verticalAlignment = this._fullscreen ? "stretch" : "middle"; + + return dialog; } public onCreateView(inflater: android.view.LayoutInflater, container: android.view.ViewGroup, savedInstanceState: android.os.Bundle): android.view.View { const owner = this.owner; owner._setupUI(this.getActivity()); owner._isAddedToNativeVisualTree = true; - + return this.owner.nativeViewProtected; } diff --git a/tns-core-modules/ui/page/page.android.ts b/tns-core-modules/ui/page/page.android.ts index 65de74393..a1e506f2f 100644 --- a/tns-core-modules/ui/page/page.android.ts +++ b/tns-core-modules/ui/page/page.android.ts @@ -44,9 +44,6 @@ export class Page extends PageBase { this.actionBar.update(); } - [actionBarHiddenProperty.getDefault](): boolean { - return undefined; - } [actionBarHiddenProperty.setNative](value: boolean) { this.updateActionBar(); } diff --git a/tns-core-modules/ui/tab-view/tab-view-common.ts b/tns-core-modules/ui/tab-view/tab-view-common.ts index 099e2d94f..ae8de05f1 100644 --- a/tns-core-modules/ui/tab-view/tab-view-common.ts +++ b/tns-core-modules/ui/tab-view/tab-view-common.ts @@ -30,7 +30,6 @@ export abstract class TabViewItemBase extends ViewBase implements TabViewItemDef get title(): string { return this._title; } - set title(value: string) { if (this._title !== value) { this._title = value; @@ -69,6 +68,17 @@ export abstract class TabViewItemBase extends ViewBase implements TabViewItemDef } } + public loadView(view: ViewBase): void { + const tabView = this.parent as TabViewBase; + if (tabView && tabView.items) { + const index = tabView.items.indexOf(this); + // Don't load items until their fragments are instantiated. + if (index === tabView.selectedIndex && (this).canBeLoaded) { + super.loadView(view); + } + } + } + public abstract _update(); } @@ -135,11 +145,8 @@ export class TabViewBase extends View implements TabViewDefinition, AddChildFrom } get _childrenCount(): number { - if (this.items) { - return this.items.length; - } - - return 0; + const items = this.items; + return items ? items.length : 0; } public eachChild(callback: (child: ViewBase) => boolean) { @@ -151,15 +158,6 @@ export class TabViewBase extends View implements TabViewDefinition, AddChildFrom } } - public loadView(view: ViewBase): void { - const item = view as TabViewItem; - const index = this.items.indexOf(item); - if (index === this.selectedIndex && item.canBeLoaded) { - super.loadView(item); - } - // Don't load items until their fragments are instantiated. - } - public eachChildView(callback: (child: View) => boolean) { const items = this.items; if (items) { @@ -193,17 +191,18 @@ export class TabViewBase extends View implements TabViewDefinition, AddChildFrom const oldItem = items[oldIndex]; if (oldItem) { - this.unloadView(oldItem); + oldItem.unloadView(oldItem.view); } const newItem = items[newIndex]; - if (newItem && !newItem.isLoaded && this.isLoaded) { - this.loadView(newItem); + if (newItem && this.isLoaded) { + newItem.loadView(newItem.view); } this.notify({ eventName: TabViewBase.selectedIndexChangedEvent, object: this, oldIndex, newIndex }); } } + export interface TabViewBase { on(eventNames: string, callback: (data: EventData) => void, thisArg?: any); on(event: "selectedIndexChanged", callback: (args: SelectedIndexChangedEventData) => void, thisArg?: any); diff --git a/tns-core-modules/ui/tab-view/tab-view.android.ts b/tns-core-modules/ui/tab-view/tab-view.android.ts index ab5c4ae3b..857e5097e 100644 --- a/tns-core-modules/ui/tab-view/tab-view.android.ts +++ b/tns-core-modules/ui/tab-view/tab-view.android.ts @@ -173,8 +173,8 @@ function initializeNativeClasses() { const tab = this.owner; const items = tab.items; const newItem = items ? items[position] : null; - if (newItem && !newItem.isLoaded && tab.isLoaded) { - tab.loadView(newItem); + if (newItem && tab.isLoaded) { + newItem.loadView(newItem.view); } } }