Search
搜索框組件,適用于瀏覽器的搜索內容輸入框等應用場景。
說明:
開發前請熟悉鴻蒙開發指導文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
該組件從API Version 8開始支持。后續版本如有新增內容,則采用上角標單獨標記該內容的起始版本。
子組件
無
接口
Search(options?: { value?: string, placeholder?: ResourceStr, icon?: string, controller?: SearchController })
參數:
參數名 | 參數類型 | 必填 | 參數描述 |
---|---|---|---|
value | string | 否 | 設置當前顯示的搜索文本內容。 從API version 10開始,該參數支持[$$]雙向綁定變量。 |
placeholder | [ResourceStr]10+ | 否 | 設置無輸入時的提示文本。 |
icon | string | 否 | 設置搜索圖標路徑,默認使用系統搜索圖標。**說明:**icon的數據源支持本地圖片和網絡圖片。 - 支持的圖片格式包括png、jpg、bmp、svg、gif和pixelmap。 - 支持Base64字符串。格式data:image/[png |
controller | SearchController | 否 | 設置Search組件控制器。 |
屬性
除支持[通用屬性]外,還支持以下屬性:
名稱 | 參數類型 | 描述 |
---|---|---|
searchButton10+ | value: string, option?: [SearchButtonOptions] | 搜索框末尾搜索按鈕文本內容,默認無搜索按鈕。 |
placeholderColor | [ResourceColor] | 設置placeholder文本顏色。 默認值:'#99182431'。 |
placeholderFont | [Font] | 設置placeholder文本樣式,包括字體大小,字體粗細,字體族,字體風格。目前僅支持默認字體族。 |
textFont | [Font] | 設置搜索框內輸入文本樣式,包括字體大小,字體粗細,字體族,字體風格。目前僅支持默認字體族。 |
textAlign | [TextAlign] | 設置文本在搜索框中的對齊方式。目前支持的對齊方式有:Start、Center、End。 默認值:TextAlign.Start |
copyOption9+ | [CopyOptions] | 設置輸入的文本是否可復制。 默認值:CopyOptions.LocalDevice,支持設備內復制。 設置CopyOptions.None時,當前Search中的文字無法被復制或剪切,僅支持粘貼。 |
searchIcon10+ | [IconOptions] | 設置左側搜索圖標樣式。 |
cancelButton10+ | { style? : [CancelButtonStyle]icon?: [IconOptions] } | 設置右側清除按鈕樣式。 默認值: { style:CancelButtonStyle.INPUT } |
fontColor10+ | [ResourceColor] | 設置輸入文本的字體顏色。 默認值:'#FF182431'。說明:[文本通用屬性]fontSize、fontStyle、fontWeight和fontFamily在textFont屬性中設置。 |
caretStyle10+ | [CaretStyle] | 設置光標樣式。 默認值: { width: '1.5vp', color: '#007DFF' } |
enableKeyboardOnFocus10+ | boolean | Search獲焦時,是否綁定輸入法 默認值:true。從API version 10開始,獲焦默認綁定輸入法。 |
selectionMenuHidden10+ | boolean | 設置長按輸入框或者右鍵輸入框時,是否彈出文本選擇菜單。 默認值:false |
customKeyboard10+ | [CustomBuilder] | 設置自定義鍵盤。**說明:**當設置自定義鍵盤時,輸入框激活后不會打開系統輸入法,而是加載指定的自定義組件。 自定義鍵盤的高度可以通過自定義組件根節點的height屬性設置,寬度不可設置,使用系統默認值。 自定義鍵盤采用覆蓋原始界面的方式呈現,不會對應用原始界面產生壓縮或者上提。 自定義鍵盤無法獲取焦點,但是會攔截手勢事件。 默認在輸入控件失去焦點時,關閉自定義鍵盤,開發者也可以通過[stopEditing]方法控制鍵盤關閉。 |
IconOptions10+對象說明
參數名 | 參數類型 | 必填 | 參數描述 |
---|---|---|---|
size | [Length] | 否 | 圖標尺寸,不支持百分比。 |
color | [ResourceColor] | 否 | 圖標顏色。 |
src | [ResourceStr] | 否 | 圖標/圖片源。 |
CaretStyle10+對象說明
參數名 | 參數類型 | 必填 | 參數描述 |
---|---|---|---|
width | [Length] | 否 | 光標尺寸,不支持百分比。 |
color | [ResourceColor] | 否 | 光標顏色。 |
SearchButtonOptions10+對象說明
參數名 | 參數類型 | 必填 | 參數描述 |
---|---|---|---|
fontSize | [Length] | 否 | 文本按鈕字體大小,不支持百分比。 |
fontColor | [ResourceColor] | 否 | 文本按鈕字體顏色。 |
CancelButtonStyle10+枚舉說明
名稱 | 描述 |
---|---|
CONSTANT | 清除按鈕常顯樣式。 |
INVISIBLE | 清除按鈕常隱樣式。 |
INPUT | 清除按鈕輸入樣式。 |
事件
除支持[通用事件]外,還支持以下事件:
名稱 | 功能描述 |
---|---|
onSubmit(callback: (value: string) => void) | 點擊搜索圖標、搜索按鈕或者按下軟鍵盤搜索按鈕時觸發該回調。 -value: 當前搜索框中輸入的文本內容。 |
onChange(callback: (value: string) => void) | 輸入內容發生變化時,觸發該回調。 -value: 當前搜索框中輸入的文本內容。 |
onCopy(callback: (value: string) => void) | 長按搜索框彈出剪切板之后,點擊剪切板的復制按鈕觸發該回調。 -value: 復制的文本內容。 |
onCut(callback: (value: string) => void) | 長按搜索框彈出剪切板之后,點擊剪切板的剪切按鈕觸發該回調。 -value: 剪切的文本內容。 |
onPaste(callback: (value: string) => void) | 長按搜索框彈出剪切板之后,點擊剪切板的粘貼按鈕觸發該回調。 -value: 粘貼的文本內容。 |
onTextSelectionChange(callback: (selectionStart: number, selectionEnd: number) => void)10+ | 文本選擇的位置發生變化時,觸發該回調。 selectionStart:文本選擇區域起始位置,文本框中文字的起始位置為0。 selectionEnd:文本選擇區域結束位置。 |
onContentScroll(callback: (totalOffsetX: number, totalOffsetY: number) => void)10+ | 文本內容滾動時,觸發該回調。 totalOffsetX:文本在內容區的橫坐標偏移。 totalOffsetY:文本在內容區的縱坐標偏移。 |
SearchController
Search組件的控制器,目前通過它可控制Search組件的光標位置。
導入對象
controller: SearchController = new SearchController()
caretPosition
caretPosition(value: number): void
設置輸入光標的位置。
參數:
參數名 | 參數類型 | 必填 | 參數描述 |
---|---|---|---|
value | number | 是 | 從字符串開始到光標所在位置的長度。 |
stopEditing10+
stopEditing(): void
退出編輯態。
getTextContentRect10+
getTextContentRect(): [RectResult]
獲取已編輯文本內容區域相對組件的位置和大小,返回值單位為像素。
返回值:
類型 | 說明 |
---|---|
[RectResult] | 已編輯文本內容的相對組件的位置和大小。 |
說明:
- 返回的位置信息是相對Search組件中搜索圖標的偏移值。
- 不輸入文本時,返回值中有相對Search組件的位置信息,但大小為0。
- 返回值中的位置信息是第一個字符相對于可編輯組件的位置。
RectResult10+
位置和大小。
參數 | 類型 | 描述 |
---|---|---|
x | number | 水平方向橫坐標。 |
y | number | 豎直方向縱坐標。 |
width | number | 內容寬度大小。 |
height | number | 內容高度大小。 |
getTextContentLineCount10+
getTextContentLineCount(): number
獲取已編輯文本內容的行數。
返回值:
類型 | 說明 |
---|---|
number | 已編輯文本內容行數。HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿 |
示例
示例1
// xxx.ets
@Entry
@Component
struct SearchExample {
@State changeValue: string = ''
@State submitValue: string = ''
controller: SearchController = new SearchController()
build() {
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')
.width('95%')
.height(40)
.backgroundColor('#F5F5F5')
.placeholderColor(Color.Grey)
.placeholderFont({ size: 14, weight: 400 })
.textFont({ size: 14, weight: 400 })
.onSubmit((value: string) = > {
this.submitValue = value
})
.onChange((value: string) = > {
this.changeValue = value
})
.margin(20)
Button('Set caretPosition 1')
.onClick(() = > {
// 設置光標位置到輸入的第一個字符后
this.controller.caretPosition(1)
})
}.width('100%')
}
}
示例2
// xxx.ets
@Entry
@Component
struct SearchButtoonExample {
@State submitValue: string = ''
build() {
Column() {
Text('onSubmit:' + this.submitValue).fontSize(18).margin(15)
Search({ placeholder: 'Type to search...' })
.searchButton('SEARCH')
.searchIcon({
src: $r('app.media.search')
})
.cancelButton({
style: CancelButtonStyle.CONSTANT,
icon: {
src: $r('app.media.cancel')
}
})
.width('90%')
.height(40)
.backgroundColor('#F5F5F5')
.placeholderColor(Color.Grey)
.placeholderFont({ size: 14, weight: 400 })
.textFont({ size: 14, weight: 400 })
.onSubmit((value: string) = > {
this.submitValue = value
})
.margin(20)
}.width('100%')
}
}
示例3
// xxx.ets
@Entry
@Component
struct SearchExample {
controller: SearchController = new SearchController()
@State inputValue: string = ""
// 自定義鍵盤組件
@Builder CustomKeyboardBuilder() {
Column() {
Button('x').onClick(() = > {
// 關閉自定義鍵盤
this.controller.stopEditing()
})
Grid() {
ForEach([1, 2, 3, 4, 5, 6, 7, 8, 9, '*', 0, '#'], (item: number | string) = > {
GridItem() {
Button(item + "")
.width(110).onClick(() = > {
this.inputValue += item
})
}
})
}.maxCount(3).columnsGap(10).rowsGap(10).padding(5)
}.backgroundColor(Color.Gray)
}
build() {
Column() {
Search({ controller: this.controller, value: this.inputValue})
// 綁定自定義鍵盤
.customKeyboard(this.CustomKeyboardBuilder()).margin(10).border({ width: 1 })
}
}
}
審核編輯 黃宇
-
組件
+關注
關注
1文章
512瀏覽量
17817 -
鴻蒙
+關注
關注
57文章
2345瀏覽量
42824
發布評論請先 登錄
相關推薦
評論