@nativescript-community/ui-material-bottomnavigationbar
Material Design 底部导航栏允许在应用中的主要目的地之间切换。点击底部导航图标可以直接跳转到相关视图或刷新当前活动的视图。
npm i --save @nativescript-community/ui-material-bottomnavigationbar

NativeScript Material 底部导航栏

为 NativeScript 提供的 Material Design 底部导航组件。

npm npm

内容

  1. 安装
  2. 变更日志
  3. 常见问题解答
  4. 用法
  5. API

安装

支持 NativeScript 7.0+

  • tns plugin add @nativescript-community/ui-material-bottomnavigationbar

支持 NativeScript 6.x

  • tns plugin add nativescript-material-bottomnavigationbar

添加插件后,请务必运行新的构建以避免任何问题。

变更日志

常见问题解答

用法

在开始使用插件之前,您需要在您的 App_Resources 目录中添加 Android 和 iOS 的图标。

原生 NativeScript

您可以使用 tabs 属性来设置选项卡

<Page xmlns="http://schemas.nativescript.org/tns.xsd"
xmlns:mdc="@nativescript-community/ui-material-bottomnavigationbar"
loaded="pageLoaded"
class="page">

<GridLayout rows="*, auto">
<StackLayout row="0">
<Label text="content"></Label>
</StackLayout>
<mdc:BottomNavigationBar
tabs="{{ tabs }}"
activeColor="green"
inactiveColor="red"
backgroundColor="black"
tabSelected="tabSelected"
row="1"
>
</mdc:BottomNavigationBar>
</GridLayout>
</Page>
import { EventData } from '@nativescript/core/data/observable';
import { Page } from '@nativescript/core/ui/page';
import { BottomNavigationTab, TabSelectedEventData } from '@nativescript-community/ui-material-bottomnavigationbar';

// Event handler for Page 'loaded' event attached in main-page.xml
export function pageLoaded(args: EventData) {
// Get the event sender
let page = <Page>args.object;
page.bindingContext = {
tabs: [
new BottomNavigationTab({ title: 'First', icon: 'res://ic_home' }),
new BottomNavigationTab({
title: 'Second',
icon: 'res://ic_view_list',
isSelectable: false
}),
new BottomNavigationTab({ title: 'Third', icon: 'res://ic_menu' })
]
};
}

export function tabSelected(args: TabSelectedEventData) {
console.log('tab selected ' + args.newIndex);
}

或者您可以直接在 xml 视图中添加选项卡

<Page xmlns="http://schemas.nativescript.org/tns.xsd"
xmlns:mdc="@nativescript-community/ui-material-bottomnavigationbar"
loaded="pageLoaded"
class="page">

<GridLayout rows="*, auto">
<StackLayout row="0">
<Label text="content"></Label>
</StackLayout>
<mdc:BottomNavigationBar
activeColor="green"
inactiveColor="red"
backgroundColor="black"
tabSelected="tabSelected"
row="1"
>

<mdc:BottomNavigationTab title="First" icon="res://ic_home" />
<mdc:BottomNavigationTab title="Second" icon="res://ic_view_list" isSelectable="false" />
<mdc:BottomNavigationTab title="Third" icon="res://ic_menu" />
</mdc:BottomNavigationBar>
</GridLayout>
</Page>

Angular

首先,您需要在您的 app.module.ts 中包含 NativeScriptMaterialBottomNavigationBarModule

import { NativeScriptMaterialBottomNavigationBarModule} from "@nativescript-community/ui-material-bottomnavigationbar/angular";

@NgModule({
imports: [
NativeScriptMaterialBottomNavigationBarModule
],
...
})
<GridLayout rows="*, auto">
<StackLayout row="0">
<label text="content"></label>
</StackLayout>
<BottomNavigationBar
[tabs]="tabs"
activeColor="red"
inactiveColor="yellow"
backgroundColor="black"
(tabSelected)="onBottomNavigationTabSelected($event)"
(tabPressed)="onBottomNavigationTabPressed($event)"
row="1"
>
</BottomNavigationBar>
</GridLayout>

或者您可以直接在 html 中声明 BottomNavigationTab

<GridLayout rows="*, auto">
<StackLayout row="0">
<label text="content"></label>
</StackLayout>
<BottomNavigationBar
activeColor="red"
inactiveColor="yellow"
backgroundColor="black"
(tabSelected)="onBottomNavigationTabSelected($event)"
(tabPressed)="onBottomNavigationTabPressed($event)"
row="1"
>

<BottomNavigationTab title="First" icon="res://ic_home"></BottomNavigationTab>
<BottomNavigationTab title="Second" icon="res://ic_view_list" [isSelectable]="false"></BottomNavigationTab>
<BottomNavigationTab title="Third" icon="res://ic_menu"></BottomNavigationTab>
</BottomNavigationBar>
</GridLayout>

Vue

如果您想使用 Vue,请在您的 app.jsmain.js 中这样做

import BottomNavigationBar from '@nativescript-community/ui-material-bottomnavigationbar/vue';

Vue.use(BottomNavigationBar);

这将安装并注册 BottomNavigationBarBottomNavigationTab 组件到您的 Vue 实例中,现在您可以使用该插件如下

<GridLayout rows="*, auto">
<StackLayout row="0">
<label text="content"></label>
</StackLayout>
<MDBottomNavigationBar activeColor="red" inactiveColor="yellow" backgroundColor="black" @tabSelected="onBottomNavigationTabSelected" row="1">
<MDBottomNavigationTab title="First" icon="ic_home" />
<MDBottomNavigationTab title="Second" icon="ic_view_list" isSelectable="false" />
<MDBottomNavigationTab title="Third" icon="ic_menu" />
</MDBottomNavigationBar>
</GridLayout>

有关如何使用 Vue 与 NativeScript 插件的更多信息,请访问此处!

CSS 样式化

您还可以使用您的 css 文件来设置或更改底部导航栏的 activeColorinactiveColorbackgroundColor

.botom-nav {
active-color: green;
inactive-color: black;
background-color: blue;
}

API

  • 属性(可绑定):通过 XML/HTML 设置的属性
  • 属性(内部):通过 JS/TS 实例访问的属性
  • 事件:通过 XML/HTML 设置的事件属性

底部导航栏

属性(可绑定)

通过 XML/HTML 设置的属性

属性 必需 默认值 类型 描述
tabs true [] Array 包含 BottomNavigationBar 选项卡的数组
titleVisibility false TitleVisibility.Selected TitleVisibility 每个 BottomNavigationTab 的标题可见性
activeColor false "black" String 当 BottomNavigationTab 被选中时的颜色
inactiveColor false "gray" String 当 BottomNavigationTab 未被选中时的颜色
backgroundColor false "white" String 底部导航栏背景颜色
badgeColor false "red" String 底部导航栏标签背景颜色
badgeTextColor false "white" String 底部导航栏标签文本颜色

属性(内部)

通过 JS/TS 实例访问的属性

属性 默认值 类型 描述
items [] Array 包含 BottomNavigationBar 选项卡的数组
selectedTabIndex 0 Number 选中选项卡的索引
titleVisibility TitleVisibility.Selected TitleVisibility 每个 BottomNavigationTab 的标题可见性
activeColor new Color('black') Color 当 BottomNavigationTab 被选中时的颜色
inactiveColor new Color('gray') Color 当 BottomNavigationTab 未被选中时的颜色
backgroundColor new Color('white') Color 底部导航栏背景颜色
badgeColor new Color('red') Color 底部导航栏标签背景颜色
badgeTextColor new Color('white') Color 底部导航栏标签文本颜色

事件

通过 XML/HTML 设置的事件属性

名称 类型 描述
tabPressed (args: TabPressedEventData): void 每次用户点击一个不可选择的标签(isSelectable: false)时,将触发该函数
tabSelected (args: TabSelectedEventData): void 每次用户选择一个新标签时,将触发该函数
tabReselected (args: TabReselectedEventData): void 每次用户选择一个已经选中的标签时,将触发该函数

方法

通过JS/TS实例可访问的方法

属性 类型 描述
selectTab(index: number) void 以编程方式选择一个标签
showBadge(index: number, value?: number) void 为特定标签显示徽章,如果想要以红色点显示徽章,则不应向该函数传递任何值

底部导航标签

属性(可绑定)

通过 XML/HTML 设置的属性

属性 必需 默认值 类型 描述
title true null string 标签的标题
icon true null string 标签的图标
isSelectable false true boolean 确定标签是否可以选择