ts-basic-components-search.md 7.6 KB
Newer Older
Y
yaoyuchi 已提交
1 2
#  Search

3
搜索框组件,适用于浏览器的搜索内容输入框等应用场景。
G
gmy 已提交
4

H
HelloCrease 已提交
5 6 7
> **说明:**
>
> 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
Y
yaoyuchi 已提交
8 9 10 11 12 13 14

## 子组件



## 接口

L
limeng 已提交
15
Search(options?: { value?: string; placeholder?: ResourceStr; icon?: string; controller?: SearchController })
Y
yaoyuchi 已提交
16

G
gmy 已提交
17
**参数:**
Y
yaoyuchi 已提交
18

G
gmy 已提交
19 20
| 参数名      | 参数类型         | 必填 | 参数描述                                                     |
| ----------- | ---------------- | ---- | ------------------------------------------------------------ |
L
limeng 已提交
21
| value       | string           | 否   | 设置当前显示的搜索文本内容。                                 |
22
| placeholder | [ResourceStr](ts-types.md#resourcestr)<sup>10+</sup> | 否   | 设置无输入时的提示文本。                                     |
23 24
| icon        | string           | 否   | 设置搜索图标路径,默认使用系统搜索图标,图标支持的图源格式: svg、jpg和png。 |
| controller  | SearchController | 否   | 设置Search组件控制器。                                                     |
Y
yaoyuchi 已提交
25 26 27

## 属性

G
gmy 已提交
28 29 30 31
除支持[通用属性](ts-universal-attributes-size.md)外,还支持以下属性:

| 名称                    | 参数类型                                         | 描述                                           |
| ----------------------- | ------------------------------------------------ | ---------------------------------------------- |
C
chensi10 已提交
32
| searchButton<sup>10+</sup> | value: string,<br />option?: [SearchButtonOption](#searchbuttonoption10对象说明)              | 搜索框末尾搜索按钮文本内容,默认无搜索按钮。               |
33 34 35 36 37
| placeholderColor        | [ResourceColor](ts-types.md#resourcecolor)       | 设置placeholder文本颜色。                           |
| placeholderFont         | [Font](ts-types.md#font)                         | 设置placeholder文本样式。                           |
| textFont                | [Font](ts-types.md#font)                         | 设置搜索框内输入文本样式。                               |
| textAlign               | [TextAlign](ts-appendix-enums.md#textalign)      | 设置文本在搜索框中的对齐方式。<br/>默认值:TextAlign.Start    |
| copyOption<sup>9+</sup> | [CopyOptions](ts-appendix-enums.md#copyoptions9) | 设置输入的文本是否可复制。                             |
C
chensi10 已提交
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| searchIcon<sup>10+</sup>   | [IconOptions](#iconoptions10对象说明)                                                  | 设置左侧搜索图标样式。                                       |
| cancelButton<sup>10+</sup> | {<br/>style? : [CancelButtonStyle](#cancelbuttonstyle10枚举说明)<br/>icon?: [IconOptions](#iconoptions10对象说明) <br/>} | 设置右侧清除按钮样式。                                       |
| fontColor<sup>10+</sup>    | [ResourceColor](ts-types.md#resourcecolor)                   | 设置输入文本的字体颜色。                                    |
| caretStyle<sup>10+</sup>  | [CaretStyle](#caretstyle10对象说明)                                                  | 设置光标样式。                                               |

## IconOptions<sup>10+</sup>对象说明

| 参数名 | 参数类型                                   | 必填 | 参数描述    |
| ------ | ------------------------------------------ | ---- | ----------- |
| size   | [Length](ts-types.md#length)               | 否   | 图标尺寸。    |
| color  | [ResourceColor](ts-types.md#resourcecolor) | 否   | 图标颜色。    |
| src    | [ResourceStr](ts-types.md#resourcestr)     | 否   | 图标/图片源。 |

## CaretStyle<sup>10+</sup>对象说明

| 参数名 | 参数类型                                   | 必填 | 参数描述 |
| ------ | ------------------------------------------ | ---- | -------- |
| width  | [Length](ts-types.md#length)               | 否   | 光标尺寸。 |
| color  | [ResourceColor](ts-types.md#resourcecolor) | 否   | 光标颜色。 |

## SearchButtonOption<sup>10+</sup>对象说明

| 参数名    | 参数类型                                   | 必填 | 参数描述         |
| --------- | ------------------------------------------ | ---- | ---------------- |
| fontSize  | [Length](ts-types.md#length)               | 否   | 文本按钮字体大小。 |
| fontColor | [ResourceColor](ts-types.md#resourcecolor) | 否   | 文本按钮字体颜色。 |

## CancelButtonStyle<sup>10+</sup>枚举说明

| 名称                    | 描述             |
| ----------------------- | ---------------- |
| CONSTANT<sup>10+</sup>  | 清除按钮常显样式。 |
| INVISIBLE<sup>10+</sup> | 清除按钮常隐样式。 |
| INPUT<sup>10+</sup>     | 清除按钮输入样式。 |
Y
yaoyuchi 已提交
72 73 74

## 事件

75 76
除支持[通用事件](ts-universal-events-click.md)外,还支持以下事件:

H
geshi  
HelloCrease 已提交
77 78
| 名称                                       | 功能描述                                     |
| ---------------------------------------- | ---------------------------------------- |
79 80 81 82 83
| onSubmit(callback: (value: string) => void) | 点击搜索图标、搜索按钮或者按下软键盘搜索按钮时触发该回调。<br> -value: 当前搜索框中输入的文本内容。 |
| onChange(callback: (value: string) => void) | 输入内容发生变化时,触发该回调。<br> -value: 当前搜索框中输入的文本内容。  |
| onCopy(callback: (value: string) => void) | 长按搜索框弹出剪切板之后,点击剪切板的复制按钮触发该回调。<br> -value: 复制的文本内容。      |
| onCut(callback: (value: string) => void)  | 长按搜索框弹出剪切板之后,点击剪切板的剪切按钮触发该回调。<br> -value: 剪切的文本内容。      |
| onPaste(callback: (value: string) => void) | 长按搜索框弹出剪切板之后,点击剪切板的粘贴按钮触发该回调。<br> -value: 粘贴的文本内容。      |
Y
yaoyuchi 已提交
84 85 86

## SearchController

87
Search组件的控制器,目前通过它可控制Search组件的光标位置。
Y
yaoyuchi 已提交
88

89
### 导入对象
Y
yaoyuchi 已提交
90 91 92
```
controller: SearchController = new SearchController()
```
93
### caretPosition
Y
yaoyuchi 已提交
94

95
caretPosition(value: number): void
Y
yaoyuchi 已提交
96 97 98

设置输入光标的位置。

G
gmy 已提交
99
**参数:**
Y
yaoyuchi 已提交
100

G
gmy 已提交
101 102 103
| 参数名 | 参数类型 | 必填 | 参数描述                           |
| ------ | -------- | ---- | ---------------------------------- |
| value  | number   | 是   | 从字符串开始到光标所在位置的长度。 |
Y
yaoyuchi 已提交
104 105 106

##  示例

H
geshi  
HelloCrease 已提交
107 108
```ts
// xxx.ets
Y
yaoyuchi 已提交
109 110 111
@Entry
@Component
struct SearchExample {
Y
yamila 已提交
112 113 114
  @State changeValue: string = ''
  @State submitValue: string = ''
  controller: SearchController = new SearchController()
Y
yaoyuchi 已提交
115 116

  build() {
117 118 119 120 121
    Column() {
      Text('onSubmit:' + this.submitValue).fontSize(18).margin(15)
      Text('onChange:' + this.changeValue).fontSize(18).margin(15)
      Search({ value: this.changeValue, placeholder: 'Type to search...', controller: this.controller })
        .searchButton('SEARCH')
Y
yaoyuchi 已提交
122
        .width(400)
123
        .height(40)
Y
yamila 已提交
124
        .backgroundColor('#F5F5F5')
Y
yaoyuchi 已提交
125
        .placeholderColor(Color.Grey)
126 127
        .placeholderFont({ size: 14, weight: 400 })
        .textFont({ size: 14, weight: 400 })
Y
yaoyuchi 已提交
128
        .onSubmit((value: string) => {
Y
yamila 已提交
129
          this.submitValue = value
Y
yaoyuchi 已提交
130 131
        })
        .onChange((value: string) => {
Y
yamila 已提交
132
          this.changeValue = value
133 134 135 136 137
        })
        .margin(20)
      Button('Set caretPosition 1')
        .onClick(() => {
          // 设置光标位置到输入的第一个字符后
Y
yamila 已提交
138
          this.controller.caretPosition(1)
Y
yaoyuchi 已提交
139
        })
140
    }.width('100%')
Y
yaoyuchi 已提交
141 142 143
  }
}
```
Y
yamila 已提交
144 145

![search](figures/search.gif)