搜索框組件,適用于瀏覽器的搜索內(nèi)容輸入框等應(yīng)用場景。
說明:
該組件從API Version 8開始支持。后續(xù)版本如有新增內(nèi)容,則采用上角標單獨標記該內(nèi)容的起始版本。
子組件
無
接口
Search(options?: { value?: string, placeholder?: ResourceStr, icon?: string, controller?: SearchController })
參數(shù):
參數(shù)名 | 參數(shù)類型 | 必填 | 參數(shù)描述 |
---|---|---|---|
value | string | 否 | 設(shè)置當前顯示的搜索文本內(nèi)容。 從API version 10開始,該參數(shù)支持$$雙向綁定變量。 |
placeholder | ResourceStr10+ | 否 | 設(shè)置無輸入時的提示文本。 |
icon | string | 否 | 設(shè)置搜索圖標路徑,默認使用系統(tǒng)搜索圖標。 說明: icon的數(shù)據(jù)源支持本地圖片和網(wǎng)絡(luò)圖片。 -?支持的圖片格式包括png、jpg、bmp、svg、gif和pixelmap。 -?支持Base64字符串。格式data:image/[png|jpeg|bmp|webp];base64,[base64 data], 其中[base64 data]為Base64字符串數(shù)據(jù)。 如果與屬性searchIcon同時設(shè)置,則searchIcon優(yōu)先。 |
controller | SearchController | 否 | 設(shè)置Search組件控制器。 |
屬性
除支持通用屬性外,還支持以下屬性:
名稱 | 參數(shù)類型 | 描述 |
---|---|---|
searchButton10+ | value: string, option?:?SearchButtonOptions |
搜索框末尾搜索按鈕文本內(nèi)容,默認無搜索按鈕。 |
placeholderColor | ResourceColor | 設(shè)置placeholder文本顏色。 默認值:'#99182431'。 |
placeholderFont | Font | 設(shè)置placeholder文本樣式,包括字體大小,字體粗細,字體族,字體風(fēng)格。目前僅支持默認字體族。 |
textFont | Font | 設(shè)置搜索框內(nèi)輸入文本樣式,包括字體大小,字體粗細,字體族,字體風(fēng)格。目前僅支持默認字體族。 |
textAlign | TextAlign | 設(shè)置文本在搜索框中的對齊方式。目前支持的對齊方式有:Start、Center、End。 默認值:TextAlign.Start |
copyOption9+ | CopyOptions | 設(shè)置輸入的文本是否可復(fù)制。 默認值:CopyOptions.LocalDevice,支持設(shè)備內(nèi)復(fù)制。 設(shè)置CopyOptions.None時,當前Search中的文字無法被復(fù)制或剪切,僅支持粘貼。 |
searchIcon10+ | IconOptions | 設(shè)置左側(cè)搜索圖標樣式。 |
cancelButton10+ | { style? :?CancelButtonStyle icon?:?IconOptions } |
設(shè)置右側(cè)清除按鈕樣式。 默認值: { style:CancelButtonStyle.INPUT } |
fontColor10+ | ResourceColor | 設(shè)置輸入文本的字體顏色。 默認值:'#FF182431'。 說明: 文本通用屬性fontSize、fontStyle、fontWeight和fontFamily在textFont屬性中設(shè)置。 |
caretStyle10+ | CaretStyle | 設(shè)置光標樣式。 默認值: { width: '1.5vp', color: '#007DFF' } |
enableKeyboardOnFocus10+ | boolean | Search獲焦時,是否綁定輸入法 默認值:true。從API version 10開始,獲焦默認綁定輸入法。 |
selectionMenuHidden10+ | boolean | 設(shè)置長按輸入框或者右鍵輸入框時,是否彈出文本選擇菜單。 默認值:false |
customKeyboard10+ | CustomBuilder | 設(shè)置自定義鍵盤。 說明: 當設(shè)置自定義鍵盤時,輸入框激活后不會打開系統(tǒng)輸入法,而是加載指定的自定義組件。 自定義鍵盤的高度可以通過自定義組件根節(jié)點的height屬性設(shè)置,寬度不可設(shè)置,使用系統(tǒng)默認值。 自定義鍵盤采用覆蓋原始界面的方式呈現(xiàn),不會對應(yīng)用原始界面產(chǎn)生壓縮或者上提。 自定義鍵盤無法獲取焦點,但是會攔截手勢事件。 默認在輸入控件失去焦點時,關(guān)閉自定義鍵盤,開發(fā)者也可以通過stopEditing方法控制鍵盤關(guān)閉。 如果設(shè)備支持拍攝輸入,設(shè)置自定義鍵盤后,該輸入框會不支持拍攝輸入。 |
type11+ | SearchType | 設(shè)置輸入框類型。 默認值:SearchType.Normal |
maxLength11+ | number | 設(shè)置文本的最大輸入字符數(shù)。 默認不設(shè)置最大輸入字符數(shù)限制。 到達文本最大字符限制,將無法繼續(xù)輸入字符。 |
IconOptions10+對象說明
參數(shù)名 | 參數(shù)類型 | 必填 | 參數(shù)描述 |
---|---|---|---|
size | Length | 否 | 圖標尺寸,不支持百分比。 |
color | ResourceColor | 否 | 圖標顏色。 |
src | ResourceStr | 否 | 圖標/圖片源。 |
CaretStyle10+對象說明
參數(shù)名 | 參數(shù)類型 | 必填 | 參數(shù)描述 |
---|---|---|---|
width | Length | 否 | 光標尺寸,不支持百分比。 |
color | ResourceColor | 否 | 光標顏色。 |
SearchButtonOptions10+對象說明
參數(shù)名 | 參數(shù)類型 | 必填 | 參數(shù)描述 |
---|---|---|---|
fontSize | Length | 否 | 文本按鈕字體大小,不支持百分比。 |
fontColor | ResourceColor | 否 | 文本按鈕字體顏色。 |
CancelButtonStyle10+枚舉說明
名稱 | 描述 |
---|---|
CONSTANT | 清除按鈕常顯樣式。 |
INVISIBLE | 清除按鈕常隱樣式。 |
INPUT | 清除按鈕輸入樣式。 |
SearchType11+枚舉說明
名稱 | 描述 |
---|---|
Normal | 基本輸入模式。 支持輸入數(shù)字、字母、下劃線、空格、特殊字符。 |
郵箱地址輸入模式。支持數(shù)字,字母,下劃線,以及@字符(只能存在一個@字符)。 | |
Number | 純數(shù)字輸入模式。 |
PhoneNumber | 電話號碼輸入模式。 支持輸入數(shù)字、+ 、-、*、#,長度不限。 |
事件
除支持通用事件外,還支持以下事件:
名稱 | 功能描述 |
---|---|
onSubmit(callback: (value: string) => void) | 點擊搜索圖標、搜索按鈕或者按下軟鍵盤搜索按鈕時觸發(fā)該回調(diào)。 -value: 當前搜索框中輸入的文本內(nèi)容。 |
onChange(callback: (value: string) => void) | 輸入內(nèi)容發(fā)生變化時,觸發(fā)該回調(diào)。 -value: 當前搜索框中輸入的文本內(nèi)容。 |
onCopy(callback: (value: string) => void) | 長按搜索框彈出剪切板之后,點擊剪切板的復(fù)制按鈕觸發(fā)該回調(diào)。 -value: 復(fù)制的文本內(nèi)容。 |
onCut(callback: (value: string) => void) | 長按搜索框彈出剪切板之后,點擊剪切板的剪切按鈕觸發(fā)該回調(diào)。 -value: 剪切的文本內(nèi)容。 |
onPaste(callback: (value: string, event11+:?PasteEvent) => void) | 長按搜索框彈出剪切板之后,點擊剪切板的粘貼按鈕觸發(fā)該回調(diào)。 - value: 粘貼的文本內(nèi)容。 - event: 用戶自定義的粘貼事件。 |
onTextSelectionChange(callback: (selectionStart: number, selectionEnd: number) => void)10+ | 文本選擇的位置發(fā)生變化時,觸發(fā)該回調(diào)。 selectionStart:文本選擇區(qū)域起始位置,文本框中文字的起始位置為0。 selectionEnd:文本選擇區(qū)域結(jié)束位置。 |
onContentScroll(callback: (totalOffsetX: number, totalOffsetY: number) => void)10+ | 文本內(nèi)容滾動時,觸發(fā)該回調(diào)。 totalOffsetX:文本在內(nèi)容區(qū)的橫坐標偏移,單位px。 totalOffsetY:文本在內(nèi)容區(qū)的縱坐標偏移,單位px。 |
SearchController
Search組件的控制器,目前通過它可控制Search組件的光標位置。
導(dǎo)入對象
controller: SearchController = new SearchController()
caretPosition
caretPosition(value: number): void
設(shè)置輸入光標的位置。
參數(shù):
參數(shù)名 | 參數(shù)類型 | 必填 | 參數(shù)描述 |
---|---|---|---|
value | number | 是 | 從字符串開始到光標所在位置的長度。 |
stopEditing10+
stopEditing(): void
退出編輯態(tài)。
getTextContentRect10+
getTextContentRect(): RectResult
獲取已編輯文本內(nèi)容區(qū)域相對組件的位置和大小,返回值單位為像素。
返回值:
類型 | 說明 |
---|---|
RectResult | 已編輯文本內(nèi)容的相對組件的位置和大小。 |
說明:
- 返回的位置信息是相對Search組件中搜索圖標的偏移值。
- 不輸入文本時,返回值中有相對Search組件的位置信息,但大小為0。
- 返回值中的位置信息是第一個字符相對于可編輯組件的位置。
RectResult10+
位置和大小,單位均為像素。
參數(shù) | 類型 | 描述 |
---|---|---|
x | number | 水平方向橫坐標。 |
y | number | 豎直方向縱坐標。 |
width | number | 內(nèi)容寬度大小。 |
height | number | 內(nèi)容高度大小。 |
getTextContentLineCount10+
getTextContentLineCount(): number
獲取已編輯文本內(nèi)容的行數(shù)。
返回值:
類型 | 說明 |
---|---|
number | 已編輯文本內(nèi)容行數(shù)。 |
getCaretOffset11+
getCaretOffset(): CaretOffset
返回當前光標所在位置信息。
返回值:
類型 | 說明 |
---|---|
CaretOffset | 光標相對輸入框的位置。 |
說明:
- 返回的位置信息是相對Search組件中搜索圖標的偏移值。
- 不輸入文本時,返回值中有相對Search組件的位置信息。
- 返回值中的位置信息是光標相對于可編輯組件的位置。
- 在當前幀更新光標位置同時調(diào)用該接口,該接口不生效。
示例
示例1
// xxx.ets
@Entry
@Component
struct SearchExample {
@State changeValue: string = ''
@State submitValue: string = ''
@State positionInfo: CaretOffset = { index: 0, x: 0, y: 0 }
controller: SearchController = new SearchController()
build() {
Column({space: 10}) {
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(() => {
// 設(shè)置光標位置到輸入的第一個字符后
this.controller.caretPosition(1)
})
Button('Get CaretOffset')
.onClick(() => {
this.positionInfo = this.controller.getCaretOffset()
})
}.width('100%')
}
}
示例2
// xxx.ets
@Entry
@Component
struct SearchExample {
@State changeValue: string = ''
@State submitValue: string = ''
build() {
Column() {
Text('onSubmit:' + this.submitValue).fontSize(18).margin(15)
Search({ value: this.changeValue, 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)
.maxLength(20)
.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)
}.width('100%')
}
}
示例3
// xxx.ets
@Entry
@Component
struct SearchExample {
controller: SearchController = new SearchController()
@State inputValue: string = ""
// 自定義鍵盤組件
@Builder CustomKeyboardBuilder() {
Column() {
Button('x').onClick(() => {
// 關(guān)閉自定義鍵盤
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 })
}
}
}
最后,有很多小伙伴不知道學(xué)習(xí)哪些鴻蒙開發(fā)技術(shù)?不知道需要重點掌握哪些鴻蒙應(yīng)用開發(fā)知識點?而且學(xué)習(xí)時頻繁踩坑,最終浪費大量時間。所以有一份實用的鴻蒙(Harmony NEXT)資料用來跟著學(xué)習(xí)是非常有必要的。?
這份鴻蒙(Harmony NEXT)資料包含了鴻蒙開發(fā)必掌握的核心知識要點,內(nèi)容包含了(ArkTS、ArkUI開發(fā)組件、Stage模型、多端部署、分布式應(yīng)用開發(fā)、音頻、視頻、WebGL、OpenHarmony多媒體技術(shù)、Napi組件、OpenHarmony內(nèi)核、Harmony南向開發(fā)、鴻蒙項目實戰(zhàn)等等)鴻蒙(Harmony NEXT)技術(shù)知識點。
希望這一份鴻蒙學(xué)習(xí)資料能夠給大家?guī)韼椭?,有需要的小伙伴自行領(lǐng)取,限時開源,先到先得~無套路領(lǐng)?。?!
獲取這份完整版高清學(xué)習(xí)路線,請點擊→純血版全套鴻蒙HarmonyOS學(xué)習(xí)資料
鴻蒙(Harmony NEXT)最新學(xué)習(xí)路線
-
?HarmonOS基礎(chǔ)技能
-
HarmonOS就業(yè)必備技能?
- ?HarmonOS多媒體技術(shù)
- 鴻蒙NaPi組件進階
- HarmonOS高級技能
-
初識HarmonOS內(nèi)核?
- 實戰(zhàn)就業(yè)級設(shè)備開發(fā)
有了路線圖,怎么能沒有學(xué)習(xí)資料呢,小編也準備了一份聯(lián)合鴻蒙官方發(fā)布筆記整理收納的一套系統(tǒng)性的鴻蒙(OpenHarmony )學(xué)習(xí)手冊(共計1236頁)與鴻蒙(OpenHarmony )開發(fā)入門教學(xué)視頻,內(nèi)容包含:ArkTS、ArkUI、Web開發(fā)、應(yīng)用模型、資源分類…等知識點。
獲取以上完整版高清學(xué)習(xí)路線,請點擊→純血版全套鴻蒙HarmonyOS學(xué)習(xí)資料
《鴻蒙 (OpenHarmony)開發(fā)入門教學(xué)視頻》
《鴻蒙生態(tài)應(yīng)用開發(fā)V2.0白皮書》
《鴻蒙 (OpenHarmony)開發(fā)基礎(chǔ)到實戰(zhàn)手冊》
OpenHarmony北向、南向開發(fā)環(huán)境搭建
?《鴻蒙開發(fā)基礎(chǔ)》
- ArkTS語言
- 安裝DevEco Studio
- 運用你的第一個ArkTS應(yīng)用
- ArkUI聲明式UI開發(fā)
- .……
?《鴻蒙開發(fā)進階》
- Stage模型入門
- 網(wǎng)絡(luò)管理
- 數(shù)據(jù)管理
- 電話服務(wù)
- 分布式應(yīng)用開發(fā)
- 通知與窗口管理
- 多媒體技術(shù)
- 安全技能
- 任務(wù)管理
- WebGL
- 國際化開發(fā)
- 應(yīng)用測試
- DFX面向未來設(shè)計
- 鴻蒙系統(tǒng)移植和裁剪定制
- ……
《鴻蒙進階實戰(zhàn)》
- ArkTS實踐
- UIAbility應(yīng)用
- 網(wǎng)絡(luò)案例
- ……
?獲取以上完整鴻蒙HarmonyOS學(xué)習(xí)資料,請點擊→純血版全套鴻蒙HarmonyOS學(xué)習(xí)資料
總結(jié)
總的來說,華為鴻蒙不再兼容安卓,對中年程序員來說是一個挑戰(zhàn),也是一個機會。只有積極應(yīng)對變化,不斷學(xué)習(xí)和提升自己,他們才能在這個變革的時代中立于不敗之地。?文章來源:http://www.zghlxwxcb.cn/news/detail-843028.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-843028.html
到了這里,關(guān)于鴻蒙Harmony應(yīng)用開發(fā)—ArkTS聲明式開發(fā)(基礎(chǔ)手勢:Search)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!