1# toolbar开发指导 2 3 4toolbar为页面工具栏组件,用于展示针对当前界面的操作选项,可作为页面的一级导航。具体用法请参考[toolbar](../reference/arkui-js/js-components-basic-toolbar.md)。 5 6 7## 创建toolbar组件 8 9在pages/index目录下的hml文件中创建一个toolbar组件。 10 11 12```html 13<!-- xxx.hml --> 14<div class="container"> 15 <toolbar style="background-color: #F1F3F5;"> 16 <toolbar-item value="item1"></toolbar-item> 17 <toolbar-item value="item2"></toolbar-item> 18 </toolbar> 19</div> 20``` 21 22 23```css 24/* xxx.css */ 25.container { 26 width: 100%; 27 height: 100%; 28 flex-direction: column; 29 justify-content: center; 30 align-items: center; 31 background-color: #F1F3F5; 32} 33toolbar-item{ 34 font-size: 35px; 35} 36``` 37 38 39 40 41## 添加子组件 42 43 toolbar组件仅支持toolbar-item为子组件,页面最多可以展示5个toolbar-item子组件,如果存在6个及以上toolbar-item,则保留前面4个,后续的将收纳到工具栏上的更多项中,通过点击更多项弹窗进行展示。并且更多项展示的组件样式采用系统默认样式,toolbar-item上设置的自定义样式不生效。 44 45```html 46<!-- xxx.hml --> 47<div class="container"> 48 <toolbar> 49 <toolbar-item value="item1"></toolbar-item> 50 <toolbar-item value="item2"></toolbar-item> 51 <toolbar-item value="item3"></toolbar-item> 52 <toolbar-item value="item4"></toolbar-item> 53 <toolbar-item value="item5"></toolbar-item> 54 <toolbar-item value="item6"></toolbar-item> 55 </toolbar> 56</div> 57``` 58 59 60```css 61/* xxx.css */ 62.container { 63 width: 100%; 64 height: 100%; 65 flex-direction: column; 66 justify-content: center; 67 align-items: center; 68 background-color: #F1F3F5; 69} 70toolbar-item{ 71 font-size: 35px; 72} 73``` 74 75 76 77 78## 设置样式 79 80设置position样式控制toolbar组件的位置,并设置子组件toolbar-item的字体颜色、大小及背景色。 81 82 83 84```html 85<!-- xxx.hml --> 86<div class="container"> 87 <toolbar style="position: fixed;bottom: 5%;width: 100%;background-color: #F1F3F5;"> 88 <toolbar-item value="item1" icon="common/images/1.png" class="toolbarActive"></toolbar-item> 89 <toolbar-item value="item2" icon="common/images/2.png"></toolbar-item> 90 <toolbar-item value="item3" icon="common/images/1.png"></toolbar-item> 91 <toolbar-item value="item4" icon="common/images/2.png"></toolbar-item> 92 </toolbar> 93</div> 94``` 95 96 97 98```css 99/* xxx.css */ 100.container { 101 background-color: #F1F3F5; 102 flex-direction: column; 103 width: 100%; 104 height: 100%; 105 justify-content: center; 106 align-items: center; 107} 108toolbar-item{ 109 font-size: 35px; 110} 111.toolbarActive{ 112 color: red; 113 background-color: #daebef; 114} 115``` 116 117 118 119 120 121## 绑定事件 122 123分别给toolbar-item绑定单击事件和长按事件,单击后文本变红,长按时文本变蓝。 124 125 126```html 127<!-- xxx.hml --> 128<div class="container"> 129 <toolbar style="position: fixed;top: 50%;width: 100%;background-color: #F1F3F5;"> 130 <toolbar-item value="item1" icon="common/images/1.png" style="color: {{itemColor}};" onclick="itemClick"></toolbar-item> 131 <toolbar-item value="item2" icon="common/images/2.png" style="color: {{itemColor}}"></toolbar-item> 132 <toolbar-item value="item3" icon="common/images/3.png" style="color: {{itemColor}}" onlongpress="itemLongPress"></toolbar-item> 133 </toolbar> 134</div> 135``` 136 137 138```css 139/* xxx.css */ 140.container { 141 background-color: #F1F3F5; 142 flex-direction: column; 143 width: 100%; 144 height: 100%; 145 justify-content: center; 146 align-items: center; 147} 148toolbar-item{ 149 font-size: 35px; 150} 151``` 152 153 154```js 155// xxx.js 156import promptAction from '@ohos.promptAction'; 157export default { 158 data:{ 159 itemColor:'black' 160 }, 161 itemClick(){ 162 this.itemColor= "red"; 163 promptAction.showToast({duration:2000,message:'item click'}); 164 }, 165 itemLongPress(){ 166 promptAction.showToast({duration:2000,message:'item long press'}); 167 this.itemColor= "blue"; 168 }, 169} 170``` 171 172 173 174> **说明:** 175> toolbar组件不支持添加事件和方法,但其子组件toolbar-item支持。 176 177 178## 场景示例 179 180本场景中开发者可点击toolbar-item组件,改变当前组件文本颜色并更换相对应的图片内容。 181 182 使用for循环创建toolbar-item组件并添加点击事件,点击后获得索引值进行存储。设置文本颜色时,判断当前索引值是否为储存的值,若相同则设置为红色,不同则使用默认颜色。 183 184```html 185<!-- xxx.hml --> 186<div class="container"> 187 <image src="{{imgList[active]}}"></image> 188 <toolbar style="position: fixed;bottom: 5%;width: 100%;background-color: #F1F3F5;"> 189 <toolbar-item value="{{ item.option}}" icon="{{item.icon}}" style="color: {{active == $idx?'red':'black'}};background-color: {{active 190 == $idx?'#dbe7f1':'#F1F3F5'}};" for="{{item in itemList}}" onclick="itemClick({{$idx}})"></toolbar-item> 191 </toolbar> 192</div> 193``` 194 195 196```css 197/* xxx.css */ 198.container { 199 background-color: #F1F3F5; 200 flex-direction: column; 201 width: 100%; 202 justify-content: center; 203 align-items: center; 204} 205toolbar-item{ 206 font-size: 35px; 207} 208``` 209 210 211```js 212// xxx.js 213export default { 214 data:{ 215 active: 0, 216 imgList:["common/images/1.png","common/images/2.png","common/images/3.png","common/images/4.png"], 217 itemList:[ 218 {option:'item1',icon:'common/images/1.png'}, 219 {option:'item2',icon:'common/images/2.png'}, 220 {option:'item3',icon:'common/images/3.png'}, 221 {option:'item4',icon:'common/images/4.png'}, 222 ] 223 }, 224 itemClick(id){ 225 this.active= id; 226 }, 227} 228``` 229 230 231 232 233## 相关实例 234 235针对toolbar开发,有以下相关实例可供参考: 236 237- [`Toolbar`:工具栏(JS)(API8)](https://gitee.com/openharmony/applications_app_samples/tree/OpenHarmony-3.2-Release/UI/Toolbar) 238