• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# toolbar开发指导
2
3
4toolbar为页面工具栏组件,用于展示针对当前界面的操作选项,可作为页面的一级导航。具体用法请参考[toolbar](../reference/arkui-js/js-components-basic-toolbar.md)。
5
6
7## 创建toolbar组件
8
9pages/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![zh-cn_image_0000001175668970](figures/zh-cn_image_0000001175668970.gif)
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![zh-cn_image_0000001175828962](figures/zh-cn_image_0000001175828962.gif)
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```
112
113
114![zh-cn_image_0000001218279254](figures/zh-cn_image_0000001218279254.png)
115
116
117## 绑定事件
118
119分别给toolbar-item绑定单击事件和长按事件,单击后文本变红,长按时文本变蓝。
120
121
122```html
123<!-- xxx.hml -->
124<div class="container">
125  <toolbar style="position: fixed;top: 50%;width: 100%;background-color: #F1F3F5;">
126    <toolbar-item value="item1" icon="common/images/1.png" style="color: {{itemColor}};" onclick="itemClick"></toolbar-item>
127    <toolbar-item value="item2" icon="common/images/2.png"  style="color: {{itemColor}}"></toolbar-item>
128    <toolbar-item value="item3" icon="common/images/3.png"  style="color: {{itemColor}}" onlongpress="itemLongPress"></toolbar-item>
129  </toolbar>
130</div>
131```
132
133
134```css
135/* xxx.css */
136.container {
137  background-color: #F1F3F5;
138  flex-direction: column;
139  width: 100%;
140  height: 100%;
141  justify-content: center;
142  align-items: center;
143}
144toolbar-item{
145  font-size: 35px;
146}
147```
148
149
150```js
151// xxx.js
152import promptAction from '@ohos.promptAction';
153export default {
154  data:{
155    itemColor:'black'
156  },
157  itemClick(){
158    this.itemColor= "red";
159    promptAction.showToast({duration:2000,message:'item click'});
160  },
161  itemLongPress(){
162    promptAction.showToast({duration:2000,message:'item long press'});
163    this.itemColor= "blue";
164  },
165}
166```
167
168![zh-cn_image_0000001218439306](figures/zh-cn_image_0000001218439306.gif)
169
170> **说明:**
171> toolbar组件不支持添加事件和方法,但其子组件toolbar-item支持。
172
173
174## 场景示例
175
176本场景中开发者可点击toolbar-item组件,改变当前组件文本颜色并更换相对应的图片内容。
177
178  使用for循环创建toolbar-item组件并添加点击事件,点击后获得索引值进行存储。设置文本颜色时,判断当前索引值是否为储存的值,若相同则设置为红色,不同则使用默认颜色。
179
180```html
181<!-- xxx.hml -->
182<div class="container">
183  <image src="{{imgList[active]}}"></image>
184  <toolbar style="position: fixed;bottom: 5%;width: 100%;background-color: #F1F3F5;">
185    <toolbar-item value="{{ item.option}}" icon="{{item.icon}}" style="color: {{active == $idx?'red':'black'}};background-color: {{active== $idx?'#dbe7f1':'#F1F3F5'}};" for="{{item in itemList}}" onclick="itemClick({{$idx}})"></toolbar-item>
186    </toolbar>
187</div>
188```
189
190
191```css
192/* xxx.css */
193.container {
194  background-color: #F1F3F5;
195  flex-direction: column;
196  width: 100%;
197  justify-content: center;
198  align-items: center;
199}
200toolbar-item{
201  font-size: 35px;
202}
203```
204
205
206```js
207// xxx.js
208export default {
209  data:{
210    active: 0,
211    imgList:["common/images/1.png","common/images/2.png","common/images/3.png","common/images/4.png"],
212    itemList:[
213      {option:'item1',icon:'common/images/1.png'},
214      {option:'item2',icon:'common/images/2.png'},
215      {option:'item3',icon:'common/images/3.png'},
216      {option:'item4',icon:'common/images/4.png'},
217    ]
218  },
219  itemClick(id){
220    this.active= id;
221  },
222}
223```
224
225![zh-cn_image_0000001263279105](figures/zh-cn_image_0000001263279105.gif)
226
227
228