mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-17 04:41:36 +08:00
Ipdate single item in tab view
This commit is contained in:
@ -159,6 +159,7 @@
|
|||||||
<TypeScriptCompile Include="apps\tests\pages\page19.ts">
|
<TypeScriptCompile Include="apps\tests\pages\page19.ts">
|
||||||
<DependentUpon>page19.xml</DependentUpon>
|
<DependentUpon>page19.xml</DependentUpon>
|
||||||
</TypeScriptCompile>
|
</TypeScriptCompile>
|
||||||
|
<TypeScriptCompile Include="apps\tests\pages\tab-view.ts" />
|
||||||
<TypeScriptCompile Include="apps\tests\ui\animation\animation-tests.ts" />
|
<TypeScriptCompile Include="apps\tests\ui\animation\animation-tests.ts" />
|
||||||
<TypeScriptCompile Include="apps\tests\ui\search-bar\search-bar-tests-native.android.ts" />
|
<TypeScriptCompile Include="apps\tests\ui\search-bar\search-bar-tests-native.android.ts" />
|
||||||
<TypeScriptCompile Include="apps\tests\ui\search-bar\search-bar-tests-native.d.ts" />
|
<TypeScriptCompile Include="apps\tests\ui\search-bar\search-bar-tests-native.d.ts" />
|
||||||
@ -175,6 +176,7 @@
|
|||||||
<Content Include="apps\tests\pages\page19.xml">
|
<Content Include="apps\tests\pages\page19.xml">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</Content>
|
</Content>
|
||||||
|
<Content Include="apps\tests\pages\tab-view.xml" />
|
||||||
<Content Include="apps\ui-tests-app\app.css" />
|
<Content Include="apps\ui-tests-app\app.css" />
|
||||||
<TypeScriptCompile Include="apps\ui-tests-app\pages\handlers.ts" />
|
<TypeScriptCompile Include="apps\ui-tests-app\pages\handlers.ts" />
|
||||||
<TypeScriptCompile Include="apps\ui-tests-app\pages\htmlview.ts" />
|
<TypeScriptCompile Include="apps\ui-tests-app\pages\htmlview.ts" />
|
||||||
|
23
apps/tests/pages/tab-view.ts
Normal file
23
apps/tests/pages/tab-view.ts
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
var observableModule = require("data/observable");
|
||||||
|
var vm = new observableModule.Observable();
|
||||||
|
function onPageLoaded(args) {
|
||||||
|
var page = args.object;
|
||||||
|
vm.set("firstTitle", "fiiiirst");
|
||||||
|
vm.set("secondTitle", "secondTitle");
|
||||||
|
vm.set("secondIcon", "res://icon");
|
||||||
|
page.bindingContext = vm;
|
||||||
|
}
|
||||||
|
exports.onPageLoaded = onPageLoaded;
|
||||||
|
var i = 0;
|
||||||
|
function onTap() {
|
||||||
|
i++;
|
||||||
|
vm.set("firstTitle", "changed " + i);
|
||||||
|
if (i == 3) {
|
||||||
|
vm.set("firstIcon", "res://ic_action");
|
||||||
|
}
|
||||||
|
if (i == 4) {
|
||||||
|
vm.set("firstIcon", "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.onTap = onTap;
|
||||||
|
//# sourceMappingURL=tab-view.js.map
|
21
apps/tests/pages/tab-view.xml
Normal file
21
apps/tests/pages/tab-view.xml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<Page loaded="onPageLoaded">
|
||||||
|
<TabView>
|
||||||
|
<TabView.items>
|
||||||
|
<TabViewItem title="{{ firstTitle }}" iconSource="{{ firstIcon }}">
|
||||||
|
<TabViewItem.view>
|
||||||
|
<GridLayout>
|
||||||
|
<Button tap="onTap" text="click" />
|
||||||
|
</GridLayout>
|
||||||
|
</TabViewItem.view>
|
||||||
|
</TabViewItem>
|
||||||
|
<TabViewItem title="{{ secondTitle }}" iconSource="{{ secondIcon }}">
|
||||||
|
<TabViewItem.view>
|
||||||
|
<GridLayout>
|
||||||
|
<Label text="Second Tab" verticalAlignment="center" horizontalAlignment="center"/>
|
||||||
|
</GridLayout>
|
||||||
|
</TabViewItem.view>
|
||||||
|
</TabViewItem>
|
||||||
|
</TabView.items>
|
||||||
|
</TabView>
|
||||||
|
</Page>
|
1
org.nativescript.widgets.d.ts
vendored
1
org.nativescript.widgets.d.ts
vendored
@ -151,6 +151,7 @@
|
|||||||
setSelectedIndicatorColors(color: Array<number>): void;
|
setSelectedIndicatorColors(color: Array<number>): void;
|
||||||
|
|
||||||
setItems(items: Array<TabItemSpec>, viewPager: android.support.v4.view.ViewPager): void;
|
setItems(items: Array<TabItemSpec>, viewPager: android.support.v4.view.ViewPager): void;
|
||||||
|
updateItemAt(position: number, itemSpec: TabItemSpec): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class TabItemSpec {
|
export class TabItemSpec {
|
||||||
|
@ -12,20 +12,14 @@ var ACCENT_COLOR = "colorAccent";
|
|||||||
var PRIMARY_COLOR = "colorPrimary";
|
var PRIMARY_COLOR = "colorPrimary";
|
||||||
var DEFAULT_ELEVATION = 4;
|
var DEFAULT_ELEVATION = 4;
|
||||||
|
|
||||||
//var RESOURCE_PREFIX = "res://";
|
|
||||||
|
|
||||||
global.moduleMerge(common, exports);
|
global.moduleMerge(common, exports);
|
||||||
|
|
||||||
export class TabViewItem extends common.TabViewItem {
|
export class TabViewItem extends common.TabViewItem {
|
||||||
public _tab: android.app.ActionBar.Tab;
|
|
||||||
public _parent: TabView;
|
public _parent: TabView;
|
||||||
|
|
||||||
public _update() {
|
public _update() {
|
||||||
if (this._parent && this._tab) {
|
if (this._parent) {
|
||||||
var androidApp = app.android;
|
this._parent._updateTabForItem(this);
|
||||||
var resources = androidApp.context.getResources();
|
|
||||||
this._tab.setText(this.title);
|
|
||||||
this._parent._setIcon(this.iconSource, this._tab, resources, androidApp.packageName);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -209,19 +203,23 @@ export class TabView extends common.TabView {
|
|||||||
trace.write("TabView._onItemsPropertyChangedSetNativeValue(" + data.oldValue + " ---> " + data.newValue + ");", common.traceCategory);
|
trace.write("TabView._onItemsPropertyChangedSetNativeValue(" + data.oldValue + " ---> " + data.newValue + ");", common.traceCategory);
|
||||||
|
|
||||||
if (data.oldValue) {
|
if (data.oldValue) {
|
||||||
|
var oldItems: Array<TabViewItem> = data.newValue;
|
||||||
|
oldItems.forEach((oldItem) => { oldItem._parent = null; });
|
||||||
|
|
||||||
this._viewPager.setAdapter(null);
|
this._viewPager.setAdapter(null);
|
||||||
this._pagerAdapter = null;
|
this._pagerAdapter = null;
|
||||||
this._tabLayout.setItems(null, null);
|
this._tabLayout.setItems(null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.newValue) {
|
if (data.newValue) {
|
||||||
var items: Array<definition.TabViewItem> = data.newValue;
|
var items: Array<TabViewItem> = data.newValue;
|
||||||
var tabItems = new Array<org.nativescript.widgets.TabItemSpec>();
|
var tabItems = new Array<org.nativescript.widgets.TabItemSpec>();
|
||||||
items.forEach((item, idx, arr) => {
|
items.forEach((item, idx, arr) => {
|
||||||
if (types.isNullOrUndefined(item.view)) {
|
if (types.isNullOrUndefined(item.view)) {
|
||||||
throw new Error("View of TabViewItem at index " + idx + " is " + item.view);
|
throw new Error("View of TabViewItem at index " + idx + " is " + item.view);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
item._parent = this;
|
||||||
tabItems.push(this.createTabItem(item));
|
tabItems.push(this.createTabItem(item));
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -234,6 +232,15 @@ export class TabView extends common.TabView {
|
|||||||
this._updateSelectedIndexOnItemsPropertyChanged(data.newValue);
|
this._updateSelectedIndexOnItemsPropertyChanged(data.newValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public _updateTabForItem(item: TabViewItem) {
|
||||||
|
if (this.items && this.items.length > 0) {
|
||||||
|
var index = this.items.indexOf(item);
|
||||||
|
if (index >= 0) {
|
||||||
|
this._tabLayout.updateItemAt(index, this.createTabItem(item));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public _onSelectedIndexPropertyChangedSetNativeValue(data: dependencyObservable.PropertyChangeData) {
|
public _onSelectedIndexPropertyChangedSetNativeValue(data: dependencyObservable.PropertyChangeData) {
|
||||||
trace.write("TabView._onSelectedIndexPropertyChangedSetNativeValue(" + data.oldValue + " ---> " + data.newValue + ");", common.traceCategory);
|
trace.write("TabView._onSelectedIndexPropertyChangedSetNativeValue(" + data.oldValue + " ---> " + data.newValue + ");", common.traceCategory);
|
||||||
super._onSelectedIndexPropertyChangedSetNativeValue(data);
|
super._onSelectedIndexPropertyChangedSetNativeValue(data);
|
||||||
@ -269,6 +276,7 @@ export class TabView extends common.TabView {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log("createTabItem: " + result.title + " result.iconId: " + result.iconId + " result.iconDrawable: " + result.iconDrawable);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user