• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Rating
2
3提供在给定范围内选择评分的组件。
4
5>  **说明:**
6>
7>  该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
8
9
10## 子组件
11
1213
14
15## 接口
16
17Rating(options?: { rating: number, indicator?: boolean })
18
19从API version 9开始,该接口支持在ArkTS卡片中使用。
20
21**参数:**
22
23| 参数名    | 参数类型 | 必填 | 参数描述                                                     |
24| --------- | -------- | ---- | ------------------------------------------------------------ |
25| rating    | number   | 是   | 设置并接收评分值。<br/>默认值:0<br/>取值范围: [0, stars]<br/>小于0取0,大于stars取最大值stars。<br />从API version 10开始,该参数支持[$$](../../../quick-start/arkts-two-way-sync.md)双向绑定变量。 |
26| indicator | boolean  | 否   | 设置评分组件作为指示器使用,不可改变评分。<br/>默认值:false, 可进行评分<br/>**说明:** <br/>indicator=true时,默认组件高度height=12.0vp,组件width=height * stars。 <br/>indicator=false时,默认组件高度height=28.0vp,组件width=height * stars。 |
27
28
29## 属性
30
31| 名称      | 参数类型                                                     | 描述                                                         |
32| --------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
33| stars     | number                                                       | 设置评分总数。<br/>默认值:5 <br/>从API version 9开始,该接口支持在ArkTS卡片中使用。<br/>**说明:** <br/>设置为小于等于0的值时,按默认值显示。 |
34| stepSize  | number                                                       | 操作评级的步长。<br/>默认值:0.5 <br/>从API version 9开始,该接口支持在ArkTS卡片中使用。<br/>**说明:** <br/>设置为小于0.1的值时,按默认值显示。<br/>取值范围为[0.1, stars]。 |
35| starStyle | {<br/>backgroundUri:&nbsp;string,<br/>foregroundUri:&nbsp;string,<br/>secondaryUri?:&nbsp;string<br/>} | backgroundUri:未选中的星级的图片链接,可由用户自定义或使用系统默认图片。<br/>foregroundUri:选中的星级的图片路径,可由用户自定义或使用系统默认图片。<br/>secondaryUri:部分选中的星级的图片路径,可由用户自定义或使用系统默认图片。<br/>从API version 9开始,该接口支持在ArkTS卡片中使用。<br/>**说明:** <br/>startStyle属性所支持的图片类型能力参考[Image](ts-basic-components-image.md)组件。<br/>支持加载本地图片和网络图片,暂不支持PixelMap类型和Resource资源。<br/>默认图片加载方式为异步,暂不支持同步加载。<br/>backgroundUri或者foregroundUri设置为undefined或者空字符串时,rating会选择加载系统默认星型图源。<br/>secondaryUri不设置或者设置的值为undefined或者空字符串时,优先设置为backgroundUri,效果上等同于只设置了foregroundUri、backgroundUri。 |
36
37>  **说明:**
38>
39>  rating宽高为[width, height]时,单个图片的绘制区域为[width / stars, height]。
40>
41>  为了指定绘制区域为方形,建议自定义宽高时采取[height * stars, height], width = height * stars的方式。
42
43
44## 事件
45
46| 名称                                       | 功能描述                                     |
47| ---------------------------------------- | ---------------------------------------- |
48| onChange(callback:(value:&nbsp;number)&nbsp;=&gt;&nbsp;void) | 操作评分条的评星发生改变时触发该回调。<br/>从API version 9开始,该接口支持在ArkTS卡片中使用。 |
49
50## 键盘走焦规格
51| 按键         | 功能描述                        |
52|------------|-----------------------------|
53| Tab        | 组件间切换焦点。                    |
54| 左右方向键   | 评分预览增加/减少(步长为step),不改变实际分值。 |
55| Home       | 移动到第一个星星, 不改变实际分值。          |
56| End        | 移动到最后一个星星, 不改变实际分值。         |
57| Space/Enter | 根据当前评分提交评分结果。               |
58
59## 示例
60
61### 示例1
62
63```ts
64// xxx.ets
65@Entry
66@Component
67struct RatingExample {
68  @State rating: number = 3.5
69
70  build() {
71    Column() {
72      Column() {
73        Rating({ rating: this.rating, indicator: false })
74          .stars(5)
75          .stepSize(0.5)
76          .margin({ top: 24 })
77          .onChange((value: number) => {
78            this.rating = value
79          })
80        Text('current score is ' + this.rating)
81          .fontSize(16)
82          .fontColor('rgba(24,36,49,0.60)')
83          .margin({ top: 16 })
84      }.width(360).height(113).backgroundColor('#FFFFFF').margin({ top: 68 })
85
86      Row() {
87        Image('common/testImage.jpg')
88          .width(40)
89          .height(40)
90          .borderRadius(20)
91          .margin({ left: 24 })
92        Column() {
93          Text('Yue')
94            .fontSize(16)
95            .fontColor('#182431')
96            .fontWeight(500)
97          Row() {
98            Rating({ rating: 3.5, indicator: false }).margin({ top: 1, right: 8 })
99            Text('2021/06/02')
100              .fontSize(10)
101              .fontColor('#182431')
102          }
103        }.margin({ left: 12 }).alignItems(HorizontalAlign.Start)
104
105        Text('1st Floor')
106          .fontSize(10)
107          .fontColor('#182431')
108          .position({ x: 295, y: 8 })
109      }.width(360).height(56).backgroundColor('#FFFFFF').margin({ top: 64 })
110    }.width('100%').height('100%').backgroundColor('#F1F3F5')
111  }
112}
113```
114
115![rating](figures/rating.gif)
116
117### 示例2
118
119```ts
120// xxx.ets
121@Entry
122@Component
123struct RatingExample {
124  @State rating: number = 3.5
125
126  build() {
127    Column() {
128      Rating({ rating: this.rating, indicator: false })
129        .stars(5)
130        .stepSize(0.5)
131        .starStyle({
132          backgroundUri: '/common/imag1.png', // common目录与pages同级
133          foregroundUri: '/common/imag2.png',
134          secondaryUri: '/common/imag3.png'
135        })
136        .margin({ top: 24 })
137        .onChange((value: number) => {
138          this.rating = value
139        })
140      Text('current score is ' + this.rating)
141        .fontSize(16)
142        .fontColor('rgba(24,36,49,0.60)')
143        .margin({ top: 16 })
144    }.width('100%').height('100%').backgroundColor('#F1F3F5')
145  }
146}
147```
148
149![rating1](figures/rating1.gif)