渲染出一个导航栏
当 主标题 展示为
1
行时,主标题 相对于整个Navbar
居中;当 主标题 展示超过
1
行时,主标题 距离左右 按钮 各20
,然后在剩余空间内文字以左对齐的方式展示。(具体效果下面的 特殊居中样式)
npm install @qnpm/q-navbar --save --registry=http://npmrepo.corp.qunar.com
显示代码
import NavBar from '@qnpm/q-navbar';
<NavBar
title={{
title: '这是标题'
}}
mode={'blank'}
/>
<NavBar
title={{
title: '这是标题'
}}
mode={'brand'}
/>
<NavBar
title={{
title: '这是标题'
}}
mode={'ghost'}
/>
<NavBar
title={{
title: '这是标题'
}}
mode={'crystal'}
/>
显示代码
import NavBar from '@qnpm/q-navbar';
<NavBar
title={{
title: '这是标题'
}}
leftButton={[{
icon: 'chevronBack'
}]}
/>
<NavBar
title={{
title: '这是标题'
}}
rightButton={[{
icon: 'share'
}]}
/>
<NavBar
title={{
title: '这是标题'
}}
leftButton={[{
icon: 'chevronBack',
tintColor: '#fff'
}]}
rightButton={[
{
text: '客服',
icon: 'chat',
tintColor: 'red',
handler: () => {
alert('客服')
}
},
{
text: '分享',
icon: 'share',
tintColor: 'red',
handler: () => {
alert('分享')
}
}
]}
/>
显示代码
import NavBar from '@qnpm/q-navbar';
<NavBar
title={{
title: '背景色变化',
tintColor: titleColor
}}
customStyle={{
backgroundColor: bgColor
}}
duration={210}
leftButton={[
{
icon: 'chevronBack',
tintColor: titleColor
}
]}
/>
<Button
text={'改变背景色'}
onPress={this.changeOpacity}
/>
显示代码
import NavBar from '@qnpm/q-navbar';
const titleRender = () => {
const [isExpand, changeExpand] = useState(true);
return (
<View style={styles.container}>
<NavBar
title={{
title: '这是标题',
tintColor: 'red',
subtitle: '这是副标题',
subTintColor: 'blue'
}}
/>
<NavBar
title={{
title: '这是标题默认不展开',
expandTitle: '这里是展开后的标题',
touchable: true,
onToggle: () => {}
}}
/>
<NavBar
title={{
title: '这是标题默认展开',
expandTitle: '这里是展开后的标题',
touchable: true,
expand: isExpand,
onToggle: () => {
changeExpand(!isExpand);
}
}}
/>
</View>
);
}
显示代码
import NavBar from '@qnpm/q-navbar';
<NavBar
title={{
title: '这是标题',
titleLimitLength: 2
}}
/>
<NavBar
title={{
title: '这是标题',
subtitle: '这是副标题',
subTitleLimitLength: 2
}}
/>
属性名 | 类型 | 默认值 | 是否必须 | 说明 |
---|---|---|---|---|
adaptNotch |
boolean |
false |
false |
是否适配刘海屏 |
customStyle |
QNavNarCustomStyle |
{} |
false |
自定义样式,仅支持修改容器背景颜色 |
duration |
number |
200 ms |
false |
改变背景色时,背景色切换时间 |
leftButton |
Array<NavBarButtonProps> | Array<ReactElement> |
[] |
false |
左侧按钮配置 |
mode |
blank|brand|ghost|crystal |
false |
false |
预设样式类型 |
needScale |
boolean |
false |
false |
是否开启缩放模式,开启后会对字体、容器高度、按钮大小等根据屏幕进行缩放 |
opacity |
number |
false |
1 |
导航透明度 |
rightButton |
Array<NavBarButtonProps> | Array<ReactElement> |
[] |
false |
右侧按钮配置 |
title |
NavBarTitleProps or ReactElement |
{} |
false |
标题配置 |
NavBarTitleProps
说明
属性名 | 类型 | 默认值 | 是否必须 | 说明 |
---|---|---|---|---|
accessible |
boolean |
false |
false |
是否打开无障碍标签 |
accessibilityLabel |
string |
'' |
false |
无障碍标签 |
accessibilityPreName |
string |
`` | false |
无障碍标签前缀 |
expand |
boolean |
false |
false |
标题是否展开,用于从外部控制标题展开状态(支持版本:>=0.0.3 ) |
expandTitle |
string |
'' |
false |
展开标题,touchable 为true 时,点击标题后会展示 |
numberOfLines |
number |
1 |
false |
主标题展示行数 |
onToggle |
(status: boolean) => void |
() => {} |
false |
点击标题后的回调函数,回传status 参数表示标题是展开(true )或收起(false ) |
subNumberOfLines |
number |
1 |
false |
副标题展示行数 |
subTintColor |
string |
'' |
false |
副标题字体颜色 |
subtitle |
string |
'' |
false |
副标题 |
subTitleLimitLength |
number |
15 |
false |
副标题默认展示字数,超过该长度后的字数展示... |
tintColor |
string |
'' |
false |
主标题字体颜色 |
title |
string |
'' |
false |
主标题 |
titleLimitLength |
number |
9 |
false |
主标题默认展示字数,超过该长度后的字数展示... |
touchable |
boolean |
false |
false |
主标题是否可点击 |
当 主标题 展示行数超过
1
行时,副标题将被隐藏。
NavBarButtonProps
说明
属性名 | 类型 | 默认值 | 是否必须 | 说明 |
---|---|---|---|---|
accessible |
boolean |
false |
false |
是否打开无障碍标签 |
accessibilityLabel |
string |
'' |
false |
无障碍标签 |
accessibilityPreName |
string |
`` | false |
无障碍标签前缀 |
disabled |
boolean |
false |
false |
按钮是否可点击 |
handler |
(event: GestureResponderEvent) => void |
() => {} |
false |
按钮点击回调事件 |
icon |
string or ReactElement<Text> |
'' |
false |
按钮icon 名;传字符串时,对应@qnpm/q-theme 中的Icon 组件中配置的名称 |
text |
string |
'' |
false |
按钮文字 |
tintColor |
string |
'' |
false |
按钮文字颜色 |
只传
text
或者只传icon
时,则text
,icon
在按钮区域居中展示; 如果同时传了icon
和text
,则icon
在上,text
在下,整体居中。
PresetMode
说明
blank
// 白色背景+黑色文字brand
// 主题色背景+白色文字ghost
// 透明背景+黑色文字crystal
// 透明背景+白色文字