• 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.toolbarActive{
112  color: red;
113  background-color: #daebef;
114}
115```
116
117
118![zh-cn_image_0000001218279254](figures/zh-cn_image_0000001218279254.png)
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![zh-cn_image_0000001218439306](figures/zh-cn_image_0000001218439306.gif)
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![zh-cn_image_0000001263279105](figures/zh-cn_image_0000001263279105.gif)
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