• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#  Search
2
3搜索框组件,适用于浏览器的搜索内容输入框等应用场景。
4
5> **说明:**
6>
7> 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
8
9## 子组件
10
1112
13## 接口
14
15Search(options?: { value?: string; placeholder?: string; icon?: string; controller?: SearchController })
16
17**参数:**
18
19| 参数名      | 参数类型         | 必填 | 参数描述                                                     |
20| ----------- | ---------------- | ---- | ------------------------------------------------------------ |
21| value       | string           | 否   | 设置当前显示的搜索文本内容。                                                 |
22| placeholder | string           | 否   | 设置无输入时的提示文本。                                         |
23| icon        | string           | 否   | 设置搜索图标路径,默认使用系统搜索图标,图标支持的图源格式: svg、jpg和png。 |
24| controller  | SearchController | 否   | 设置Search组件控制器。                                                     |
25
26## 属性
27
28除支持[通用属性](ts-universal-attributes-size.md)外,还支持以下属性:
29
30| 名称                    | 参数类型                                         | 描述                                           |
31| ----------------------- | ------------------------------------------------ | ---------------------------------------------- |
32| searchButton            | string                                           | 搜索框末尾搜索按钮文本内容,默认无搜索按钮。         |
33| placeholderColor        | [ResourceColor](ts-types.md#resourcecolor)       | 设置placeholder文本颜色。                           |
34| placeholderFont         | [Font](ts-types.md#font)                         | 设置placeholder文本样式,包括字体大小,字体粗细,字体族,字体风格。目前仅支持默认字体族。                         |
35| textFont                | [Font](ts-types.md#font)                         | 设置搜索框内输入文本样式,包括字体大小,字体粗细,字体族,字体风格。目前仅支持默认字体族。                           |
36| textAlign               | [TextAlign](ts-appendix-enums.md#textalign)      | 设置文本在搜索框中的对齐方式。<br/>默认值:TextAlign.Start    |
37| copyOption<sup>9+</sup> | [CopyOptions](ts-appendix-enums.md#copyoptions9) | 设置输入的文本是否可复制。                             |
38
39## 事件
40
41除支持[通用事件](ts-universal-events-click.md)外,还支持以下事件:
42
43| 名称                                       | 功能描述                                     |
44| ---------------------------------------- | ---------------------------------------- |
45| onSubmit(callback: (value: string) => void) | 点击搜索图标、搜索按钮或者按下软键盘搜索按钮时触发该回调。<br> -value: 当前搜索框中输入的文本内容。 |
46| onChange(callback: (value: string) => void) | 输入内容发生变化时,触发该回调。<br> -value: 当前搜索框中输入的文本内容。  |
47| onCopy(callback: (value: string) => void) | 长按搜索框弹出剪切板之后,点击剪切板的复制按钮触发该回调。<br> -value: 复制的文本内容。      |
48| onCut(callback: (value: string) => void)  | 长按搜索框弹出剪切板之后,点击剪切板的剪切按钮触发该回调。<br> -value: 剪切的文本内容。      |
49| onPaste(callback: (value: string) => void) | 长按搜索框弹出剪切板之后,点击剪切板的粘贴按钮触发该回调。<br> -value: 粘贴的文本内容。      |
50
51## SearchController
52
53Search组件的控制器,目前通过它可控制Search组件的光标位置。
54
55### 导入对象
56```
57controller: SearchController = new SearchController()
58```
59### caretPosition
60
61caretPosition(value: number): void
62
63设置输入光标的位置。
64
65**参数:**
66
67| 参数名 | 参数类型 | 必填 | 参数描述                           |
68| ------ | -------- | ---- | ---------------------------------- |
69| value  | number   | 是   | 从字符串开始到光标所在位置的长度。 |
70
71##  示例
72
73```ts
74// xxx.ets
75@Entry
76@Component
77struct SearchExample {
78  @State changeValue: string = ''
79  @State submitValue: string = ''
80  controller: SearchController = new SearchController()
81
82  build() {
83    Column() {
84      Text('onSubmit:' + this.submitValue).fontSize(18).margin(15)
85      Text('onChange:' + this.changeValue).fontSize(18).margin(15)
86      Search({ value: this.changeValue, placeholder: 'Type to search...', controller: this.controller })
87        .searchButton('SEARCH')
88        .width(400)
89        .height(40)
90        .backgroundColor('#F5F5F5')
91        .placeholderColor(Color.Grey)
92        .placeholderFont({ size: 14, weight: 400 })
93        .textFont({ size: 14, weight: 400 })
94        .onSubmit((value: string) => {
95          this.submitValue = value
96        })
97        .onChange((value: string) => {
98          this.changeValue = value
99        })
100        .margin(20)
101      Button('Set caretPosition 1')
102        .onClick(() => {
103          // 设置光标位置到输入的第一个字符后
104          this.controller.caretPosition(1)
105        })
106    }.width('100%')
107  }
108}
109```
110
111![search](figures/search.gif)
112