NativeScript BottomBar :beers::fire::fr:
NativeScript plugin for AHBottomNavigation and MiniTabBar.
Checkout demo.
Installation
2.x:
tns plugin add nativescript-bottombar@2.1.4
3.x:
tns plugin add nativescript-bottombar
Usage
Angular NativeScript
XML
<GridLayout rows="*, auto">
<StackLayout row="0" orientation="vertical">
<Label text="demo"></Label>
</StackLayout>
<BottomBar row="1" [items]="items" [hide]="hidden" [titleState]="titleState" (loaded)="tabLoaded($event)" (tabSelected)="tabSelected($event)" [inactiveColor]="inactiveColor" [accentColor]="accentColor" colored="true"></BottomBar>
</GridLayout>
Component
import { Component } from "@angular/core";
import { registerElement } from 'nativescript-angular';
import { BottomBar, BottomBarItem, TITLE_STATE, SelectedIndexChangedEventData, Notification } from 'nativescript-bottombar';
registerElement('BottomBar', () => BottomBar);
@Component({
selector: "nsapp",
templateUrl: "app.component.html",
})
export class AppComponent {
public hidden: boolean;
public titleState: TITLE_STATE;
public _bar: BottomBar;
public inactiveColor: string;
public accentColor: string;
public items: Array<BottomBarItem> = [
new BottomBarItem(0, "Home", "ic_home_black_24dp", "black", new Notification("blue", "white", "1")),
new BottomBarItem(1, "Calendar", "ic_calendar", "#1083BF", new Notification("green", "blue", "1")),
new BottomBarItem(2, "Profile", "ic_collaborator", "pink", new Notification("pink", "yellow", "1")),
new BottomBarItem(3, "Message", "ic_paperplane", "green", new Notification("green", "red", "1"))
];
tabLoaded(event) {
this._bar = <BottomBar>event.object;
this.hidden = false;
this.titleState = TITLE_STATE.SHOW_WHEN_ACTIVE;
this.inactiveColor = "white";
this.accentColor = "blue";
}
tabSelected(args: SelectedIndexChangedEventData) {
// only triggered when a different tab is tapped
console.log(args.newIndex);
}
}
TypeScript NativeScript
XML
<Page class="page"
navigatingTo="onNavigatingTo"
xmlns="http://www.nativescript.org/tns.xsd"
xmlns:btb="nativescript-bottombar">
<ActionBar class="action-bar">
<Label class="action-bar-title" text="Home"></Label>
</ActionBar>
<GridLayout rows="*, auto">
<Label row="0" text="row 1"/>
<btb:BottomBar row="1" items="{{ items }}" loaded="{{ tabLoaded($event) }}" hide="{{ hidden }}" titleState="{{ titleState }}" tabSelected="{{ tabSelected($event) }}" inactiveColor="{{ inactiveColor }}" accentColor="{{ accentColor }}" colored="true">
</btb:BottomBar>
</GridLayout>
</Page>
Model
import { Observable } from 'data/observable';
import { BottomBar, BottomBarItem, TITLE_STATE, SelectedIndexChangedEventData, Notification } from 'nativescript-bottombar';
export class HomeViewModel extends Observable {
public hidden: boolean;
public titleState: TITLE_STATE;
public _bar: BottomBar;
public inactiveColor: string;
public accentColor: string;
public items: Array<BottomBarItem> = [
new BottomBarItem(0, "Home", "ic_home_black_24dp", "black", new Notification("blue", "white", "1")),
new BottomBarItem(1, "Calendar", "ic_calendar", "#1083BF", new Notification("green", "blue", "1")),
new BottomBarItem(2, "Profile", "ic_collaborator", "pink", new Notification("pink", "yellow", "1")),
new BottomBarItem(3, "Message", "ic_paperplane", "green", new Notification("green", "red", "1"))
];
constructor() {
super();
}
tabLoaded(event) {
console.log("barLoaded");
this._bar = <BottomBar>event.object;
this.hidden = false;
this.titleState = TITLE_STATE.SHOW_WHEN_ACTIVE;
this.inactiveColor = "white";
this.accentColor = "blue";
}
tabSelected(args: SelectedIndexChangedEventData) {
// only triggered when a different tab is tapped
console.log(args.newIndex);
}
}
Ressources
Don't forget that you need your icons files to be in your ressources folder as follow:
iOS | Android |
---|---|
![]() |
![]() |