Skip to content

Commit a416fa4

Browse files
Hristo HristovHristo Hristov
Hristo Hristov
authored and
Hristo Hristov
committed
Fix TabViewItem loading
Fix showModal not on full screen
1 parent 0abfb14 commit a416fa4

File tree

4 files changed

+27
-25
lines changed

4 files changed

+27
-25
lines changed

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,14 +141,20 @@ function initializeDialogFragment() {
141141
this.owner._dialogFragment = this;
142142
this.setStyle(android.app.DialogFragment.STYLE_NO_TITLE, 0);
143143

144-
return new DialogImpl(this, this.getActivity(), this.getTheme());
144+
const dialog = new DialogImpl(this, this.getActivity(), this.getTheme());
145+
146+
// adjust alignment based on fullscreen value.
147+
this.owner.horizontalAlignment = this._fullscreen ? "stretch" : "center";
148+
this.owner.verticalAlignment = this._fullscreen ? "stretch" : "middle";
149+
150+
return dialog;
145151
}
146152

147153
public onCreateView(inflater: android.view.LayoutInflater, container: android.view.ViewGroup, savedInstanceState: android.os.Bundle): android.view.View {
148154
const owner = this.owner;
149155
owner._setupUI(this.getActivity());
150156
owner._isAddedToNativeVisualTree = true;
151-
157+
152158
return this.owner.nativeViewProtected;
153159
}
154160

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

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,6 @@ export class Page extends PageBase {
4444
this.actionBar.update();
4545
}
4646

47-
[actionBarHiddenProperty.getDefault](): boolean {
48-
return undefined;
49-
}
5047
[actionBarHiddenProperty.setNative](value: boolean) {
5148
this.updateActionBar();
5249
}

tns-core-modules/ui/tab-view/tab-view-common.ts

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ export abstract class TabViewItemBase extends ViewBase implements TabViewItemDef
3030
get title(): string {
3131
return this._title;
3232
}
33-
3433
set title(value: string) {
3534
if (this._title !== value) {
3635
this._title = value;
@@ -69,6 +68,17 @@ export abstract class TabViewItemBase extends ViewBase implements TabViewItemDef
6968
}
7069
}
7170

71+
public loadView(view: ViewBase): void {
72+
const tabView = this.parent as TabViewBase;
73+
if (tabView && tabView.items) {
74+
const index = tabView.items.indexOf(this);
75+
// Don't load items until their fragments are instantiated.
76+
if (index === tabView.selectedIndex && (<TabViewItemDefinition>this).canBeLoaded) {
77+
super.loadView(view);
78+
}
79+
}
80+
}
81+
7282
public abstract _update();
7383
}
7484

@@ -135,11 +145,8 @@ export class TabViewBase extends View implements TabViewDefinition, AddChildFrom
135145
}
136146

137147
get _childrenCount(): number {
138-
if (this.items) {
139-
return this.items.length;
140-
}
141-
142-
return 0;
148+
const items = this.items;
149+
return items ? items.length : 0;
143150
}
144151

145152
public eachChild(callback: (child: ViewBase) => boolean) {
@@ -151,15 +158,6 @@ export class TabViewBase extends View implements TabViewDefinition, AddChildFrom
151158
}
152159
}
153160

154-
public loadView(view: ViewBase): void {
155-
const item = view as TabViewItem;
156-
const index = this.items.indexOf(item);
157-
if (index === this.selectedIndex && item.canBeLoaded) {
158-
super.loadView(item);
159-
}
160-
// Don't load items until their fragments are instantiated.
161-
}
162-
163161
public eachChildView(callback: (child: View) => boolean) {
164162
const items = this.items;
165163
if (items) {
@@ -193,17 +191,18 @@ export class TabViewBase extends View implements TabViewDefinition, AddChildFrom
193191

194192
const oldItem = items[oldIndex];
195193
if (oldItem) {
196-
this.unloadView(oldItem);
194+
oldItem.unloadView(oldItem.view);
197195
}
198196

199197
const newItem = items[newIndex];
200-
if (newItem && !newItem.isLoaded && this.isLoaded) {
201-
this.loadView(newItem);
198+
if (newItem && this.isLoaded) {
199+
newItem.loadView(newItem.view);
202200
}
203201

204202
this.notify(<SelectedIndexChangedEventData>{ eventName: TabViewBase.selectedIndexChangedEvent, object: this, oldIndex, newIndex });
205203
}
206204
}
205+
207206
export interface TabViewBase {
208207
on(eventNames: string, callback: (data: EventData) => void, thisArg?: any);
209208
on(event: "selectedIndexChanged", callback: (args: SelectedIndexChangedEventData) => void, thisArg?: any);

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,8 @@ function initializeNativeClasses() {
173173
const tab = this.owner;
174174
const items = tab.items;
175175
const newItem = items ? items[position] : null;
176-
if (newItem && !newItem.isLoaded && tab.isLoaded) {
177-
tab.loadView(newItem);
176+
if (newItem && tab.isLoaded) {
177+
newItem.loadView(newItem.view);
178178
}
179179
}
180180
}

0 commit comments

Comments
 (0)