mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-16 20:11:24 +08:00
fix: android Tabs selected item color incorrectly applied (#9040)
* fix: selected-item-color gets applied to wrong TabStripItems * chore: Added selection colors to 2 ui examples. * chore: Removing used for testing.
This commit is contained in:

committed by
GitHub

parent
e16bc606ef
commit
b47ce0a97c
Binary file not shown.
@ -141,6 +141,7 @@ function initializeNativeClasses() {
|
||||
public items: Array<TabContentItem>;
|
||||
private mCurTransaction: androidx.fragment.app.FragmentTransaction;
|
||||
private mCurrentPrimaryItem: androidx.fragment.app.Fragment;
|
||||
private mCurrentPosition = -1;
|
||||
|
||||
constructor(public owner: Tabs) {
|
||||
super();
|
||||
@ -238,9 +239,27 @@ function initializeNativeClasses() {
|
||||
}
|
||||
|
||||
this.mCurrentPrimaryItem = fragment;
|
||||
this.owner.selectedIndex = position;
|
||||
const previousPosition = this.mCurrentPosition;
|
||||
this.mCurrentPosition = position;
|
||||
|
||||
const tab = this.owner;
|
||||
tab.selectedIndex = position;
|
||||
|
||||
// Update tabstrip items
|
||||
if (position != previousPosition) {
|
||||
const tabStripItems = tab.tabStrip && tab.tabStrip.items;
|
||||
|
||||
if (position >= 0 && tabStripItems && tabStripItems[position]) {
|
||||
tabStripItems[position]._emit(TabStripItem.selectEvent);
|
||||
tab._setItemColor(tabStripItems[position]);
|
||||
}
|
||||
|
||||
if (previousPosition >= 0 && tabStripItems && tabStripItems[previousPosition]) {
|
||||
tabStripItems[previousPosition]._emit(TabStripItem.unselectEvent);
|
||||
tab._setItemColor(tabStripItems[previousPosition]);
|
||||
}
|
||||
}
|
||||
|
||||
const tabItems = tab.items;
|
||||
const newTabItem = tabItems ? tabItems[position] : null;
|
||||
|
||||
@ -290,25 +309,6 @@ function initializeNativeClasses() {
|
||||
return global.__native(this);
|
||||
}
|
||||
|
||||
public onSelectedPositionChange(position: number, prevPosition: number): void {
|
||||
const owner = this.owner;
|
||||
if (!owner) {
|
||||
return;
|
||||
}
|
||||
|
||||
const tabStripItems = owner.tabStrip && owner.tabStrip.items;
|
||||
|
||||
if (position >= 0 && tabStripItems && tabStripItems[position]) {
|
||||
tabStripItems[position]._emit(TabStripItem.selectEvent);
|
||||
owner._setItemColor(tabStripItems[position]);
|
||||
}
|
||||
|
||||
if (prevPosition >= 0 && tabStripItems && tabStripItems[prevPosition]) {
|
||||
tabStripItems[prevPosition]._emit(TabStripItem.unselectEvent);
|
||||
owner._setItemColor(tabStripItems[prevPosition]);
|
||||
}
|
||||
}
|
||||
|
||||
public onTap(position: number): boolean {
|
||||
const owner = this.owner;
|
||||
if (!owner) {
|
||||
@ -952,11 +952,9 @@ export class Tabs extends TabsBase {
|
||||
}
|
||||
|
||||
[selectedIndexProperty.setNative](value: number) {
|
||||
// TODO
|
||||
// if (Trace.isEnabled()) {
|
||||
// Trace.write("TabView this._viewPager.setCurrentItem(" + value + ", " + smoothScroll + ");", traceCategory);
|
||||
// }
|
||||
this._viewPager.setCurrentItem(value, this.animationEnabled);
|
||||
if (this._viewPager.getCurrentItem() != value) {
|
||||
this._viewPager.setCurrentItem(value);
|
||||
}
|
||||
}
|
||||
|
||||
[itemsProperty.getDefault](): TabContentItem[] {
|
||||
|
@ -12,7 +12,7 @@ export * from '../tab-navigation-base/tab-navigation-base';
|
||||
export * from '../tab-navigation-base/tab-strip';
|
||||
export * from '../tab-navigation-base/tab-strip-item';
|
||||
|
||||
export const traceCategory = 'TabView';
|
||||
export const traceCategory = 'Tabs';
|
||||
|
||||
@CSSType('Tabs')
|
||||
export class TabsBase extends TabNavigationBase implements TabsDefinition {
|
||||
|
Reference in New Issue
Block a user